Pentaho 业务分析报告不显示小数

Reports on Pentaho Business Analytics not showing decimal numbers

我有一个带 "individuals" 的蒙德里安立方体。我需要添加两个与每个人相关的类别,以及这些类别的概率数值。此数据位于新维度 "Categories" 中。数据来自 Postgres 9 物化视图,概率在 Postgres 中属于 "numeric" 类型。

但是,当我尝试将数据显示为 "numeric" 时,具有小数值的行根本不显示。

如果我将概率取为百分比并对它们的值进行四舍五入,那么所有行都会正确显示。

<Dimension name="Categories">
    <Hierarchy name="Category1" visible="true" hasAll="true" primaryKey="id" caption="Categories">
      <Table name="individuals_mv" schema="public"/>
      <Level  approxRowCount="6000" name="Category1" visible="true" column="category_1" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never"/>
    </Hierarchy>
    <Hierarchy name="CategoryProbability1" visible="true" hasAll="true" primaryKey="id" caption="Categories">
      <Table name="individuals_mv" schema="public"/>
      <Level  approxRowCount="6000" name="CategoryProb1" visible="true" column="category_prob_1" type="Numeric" uniqueMembers="false" levelType="Regular" hideMemberIf="Never"/>
    </Hierarchy>
    <Hierarchy name="Category2" visible="true" hasAll="true" primaryKey="id" caption="Categories">
      <Table name="individuals_mv" schema="public"/>
      <Level  approxRowCount="6000" name="Category2" visible="true" column="category_2" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never"/>
    </Hierarchy>
    <Hierarchy name="CategoryProbability2" visible="true" hasAll="true" primaryKey="id" caption="Categories">
      <Table name="individuals_mv" schema="public"/>
      <Level  approxRowCount="6000" name="CategoryProb2" visible="true" column="category_prob_2" type="Numeric" uniqueMembers="false" levelType="Regular" hideMemberIf="Never"/>
    </Hierarchy>
 </Dimension>

individuals_mv的内容:

individual  category_1  category_prob_1 category_2  category_prob_2
61411120    [NULL]      [NULL]          [NULL]      [NULL]
10658560    [NULL]      [NULL]          [NULL]      [NULL]
60652135    [NULL]      [NULL]          [NULL]      [NULL]
10657820    "C1"        0.32846         "C3"        0.1957235187
60873351    "C1"        0.33012354      "C2"        0.2763309777
61399718    [NULL]      [NULL]          [NULL]      [NULL]
61378272    [NULL]      [NULL]          [NULL]      [NULL]
61378554    [NULL]      [NULL]          [NULL]      [NULL]

报表输出:

Individual       Category1            CategoryProb1        Category2            CategoryProb2
"10658560"      "Not Available"      "Not Available"      "Not Available"      "Not Available"
"60652135"      "Not Available"      "Not Available"      "Not Available"      "Not Available"
"61378272"      "Not Available"      "Not Available"      "Not Available"      "Not Available"
"61378554"      "Not Available"      "Not Available"      "Not Available"      "Not Available"
"61399718"      "Not Available"      "Not Available"      "Not Available"      "Not Available"
"61411120"      "Not Available"      "Not Available"      "Not Available"      "Not Available"

简单来说:蒙德里安不能用小数作为关卡。

层次结构级别必须是离散的,而数值不是。所以蒙德里安总是会把小数部分截掉。

您应该改为将数值作为字符串级别的属性。

例如,

<Dimension name="Categories">
    <Hierarchy name="Category1" visible="true" hasAll="true" primaryKey="id" caption="Categories">
      <Table name="individuals_mv" schema="public"/>
      <Level  approxRowCount="6000" name="Category1" visible="true" column="category_1" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
            <Property name="CategoryProb1" column="category_prob_1" type="Numeric" />
      </Level>
    </Hierarchy>
(...)
 </Dimension>

这些属性随后可用于通过 MDX 查询定义计算的度量。但不能直接作为关卡使用。

或者,您可以将值截断为固定的小数位数并使用 LevelType 作为字符串,但这会有些尴尬。