【问题标题】:Mondrian all cube measures are empty蒙德里安所有立方度量都是空的
【发布时间】:2014-06-12 13:10:59
【问题描述】:

我正在使用 Pentaho 上的 Saiku 插件来分析立方体。尽管所有维度和测量字段都是可见的,但没有显示任何事实,所有单元格都是空的。 (如果在工具栏中选择了“非空”选项,Saiku 将返回“无结果”,当未选择该选项时,将显示在列和行中正确列出所有成员的表格 - 只是没有单元格值)。因为列和行中的成员值是正确的,所以我知道 Saiku 正在正确读取多维数据集 xml 文件和 MySQL 数据源。我认为指定的测量值可能存在一些问题,但我找不到任何错误(我可以看到控制台或日志中没有错误)。请注意,无论我在 Saiku 中选择什么尺寸,都会遇到这个问题。这是我使用模式工作台创建的蒙德里安模式文件。

<Schema name="Test Small4">
<Cube name="Policy Cube" caption="A small test" visible="true" description="Policy data description" cache="true" enabled="true">
<Table name="fact_policy">
</Table>
<Dimension type="StandardDimension" visible="true" foreignKey="deductable_id" highCardinality="false" name="Deductable" caption="Caption: deductable">
  <Hierarchy visible="true" hasAll="false">
    <Table name="deductable">
    </Table>
    <Level name="Deductable Type" visible="true" column="type" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
    </Level>
    <Level name="Deductable Limit" visible="true" column="deductable_limit" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
    </Level>
    <Level name="Deductable Cap" visible="true" column="cap" type="Numeric" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
    </Level>
  </Hierarchy>
</Dimension>
<Dimension type="StandardDimension" visible="true" foreignKey="endorsement_id" highCardinality="false" name="Endorsement" caption="Caption: Endorsement">
  <Hierarchy visible="true" hasAll="true">
    <Table name="endorsement">
    </Table>
    <Level name="Endorsement Type" visible="true" column="type" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
    </Level>
    <Level name="Endorsement Number" visible="true" column="number" type="Numeric" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
    </Level>
    <Level name="Endorsement Effective Date Regular" visible="true" column="effective_date" type="Date" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
    </Level>
  </Hierarchy>
</Dimension>
<Measure name="Quantity Unique Rate" column="rate" datatype="Numeric" aggregator="distinct-count" visible="true">
</Measure>
<Measure name="Average Rate" column="rate" datatype="Numeric" aggregator="avg" visible="true">
</Measure>
<Measure name="Average Premium" column="premium" datatype="Numeric" formatString="#,###" aggregator="avg" visible="true">
</Measure>
<Measure name="Num Rates" column="rate" datatype="Integer" aggregator="distinct-count" visible="true">
</Measure>
<Measure name="String test" column="rate" datatype="String" aggregator="distinct count" visible="true">
</Measure>
<Measure name="Sum test" column="system_id" datatype="Integer" aggregator="sum" visible="true">
</Measure>
<Measure name="Test" column="system_id" datatype="Integer" formatString="Standard" aggregator="count" visible="true">
</Measure>
<CalculatedMember name="Premium Rate dif" formula="[Measures].[Average Rate]-[Measures].[Average Premium]" dimension="Measures" visible="true">
</CalculatedMember>

知道为什么会这样吗?我该如何调试这个问题?

【问题讨论】:

    标签: pentaho mondrian saiku


    【解决方案1】:

    您缺少层次结构中的 primaryKey 属性。 Dimension 元素具有正确识别事实表中的列的 foreignKey 属性,但 Hierarchy 元素没有指定维度表中的 primaryKey 来执行连接。

    因此,所有连接都将返回 0 行。 (我不知道 Mondrian 甚至会接受这样的模式,因为我希望在测试模式时连接条件格式错误)

    【讨论】:

    • 另一件事:当你在 Hierarchy 上将 hasAll 设置为 false 时,你也应该始终设置 defaultMember。否则将使用维度的第一个成员,并且第一个成员由层次结构成员的自然顺序定义。
    • 谢谢nsousa,我昨天偶然发现了这个决议。我关注了 Pentaho 自己制作的教程视频 (youtube.com/watch?v=baC8dQMyp9E),他们没有指定此字段,而且(对于刚接触 Mondrian 的人)需要它是出乎意料的,因为人们希望加入桌子。感谢您的详细回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多