具有多个级别的雪花模式

Posted

技术标签:

【中文标题】具有多个级别的雪花模式【英文标题】:Snowflake schema with multiple levels 【发布时间】:2013-04-04 12:14:41 【问题描述】:

我的架构中的一个维度是建模为具有以下表结构的雪花架构:

fact table -> criteria_value -> criteria -> Domain

蒙德里安模式:

<Dimension type="StandardDimension" foreignKey="id_value" highCardinality="false" name="Researched Value">
  <Hierarchy name="Researched Value" hasAll="true" primaryKey="id_va" primaryKeyTable="criteria_value">
    <Join leftAlias="criteria_value" leftKey="id_va" rightAlias="criteria" rightKey="id_c">
      <Table name="criteria_value">
      </Table>
      <Join leftAlias="criteria" leftKey="id_c" rightAlias="domain" rightKey="id_domain">
        <Table name="criteria" alias="">
        </Table>
        <Table name="domain" alias="">
        </Table>
      </Join>
    </Join>
    <Level name="Domain" table="domain" column="desc_d_Eng" type="String" uniqueMembers="true" levelType="Regular" hideMemberIf="Never">
    </Level>
    <Level name="Criteria" table="criteria" column="desc_c_Eng" uniqueMembers="false">
    </Level>
    <Level name="Value" table="criteria_value" column="desc_va_Eng" uniqueMembers="false">
    </Level>
  </Hierarchy>
</Dimension>

问题是在 Mondrian Workbench 中尝试使用 MDX 查询时:

[Researched Value].[Mobile services].operator ON ROWS

我可以看到对应的值 (“Mobile services”和“operator”分别是“Domain”和“Criteria”级别的第一个成员

但是当尝试例如:

[Researched Value].[Mobile services].internet ON ROWS

我明白了:

蒙德里安错误:MDX 对象'[研究值]。[移动 services].[internet]' 在多维数据集“Recherche”中找不到

虽然“互联网”是“标准”级别的成员(但不是第一个)

为什么我看不到我关卡的所有成员?

【问题讨论】:

【参考方案1】:

我认为您的 MDX 标识符中缺少关卡名称。正确的语法是:

[Hierarchy Name].[Level Name].[Member Name] (.[Child Member Name])

试试这个:

[Researched Value].[Criteria].[Internet]

【讨论】:

以上是关于具有多个级别的雪花模式的主要内容,如果未能解决你的问题,请参考以下文章

数据库的星型模型与雪花模型

雪花事务中具有多个 DML 的原子性

雪花中具有多个 JSON 对象的横向展平数组

R:根据OR条件创建具有多个级别的新变量[重复]

雪花存储过程调用具有迭代返回消息的多个语句

是否可以在 data.cube R 中设置具有雪花模式的多维数据集?