维度退化(数据仓库)
维度-退化维度刚接触Mondrian,不熟悉如果只有一个事实表,没有单独的维度表,其中事实表就包含维度信息的怎么做Schema文件。一开始做了很多自关联,导致性能下降明显。基本多维度查询速度就很慢,基本出不来了。其实这种同在事实表的,可以用退化维度来实现即可。退化维度是这样的一种维度:由于它过于简单而不值得为它创建一个维表。考虑下面的事实表:假设我们为支付方式列的值创建一个维表:支付方式Credi
·
维度-退化维度
刚接触Mondrian,不熟悉如果只有一个事实表,没有单独的维度表,其中事实表就包含维度信息的怎么做Schema文件。一开始做了很多自关联,导致性能下降明显。基本多维度查询速度就很慢,基本出不来了。
其实这种同在事实表的,可以用退化维度来实现即可。
退化维度是这样的一种维度:由于它过于简单而不值得为它创建一个维表。考虑下面的事实表:
假设我们为支付方式列的值创建一个维表:
支付方式
Credit
Cash
ATM
这个维表没什么意义,它只有三个取值,没有额外的信息,并产生了额外的连接开销。你可以创建一个退化维度,只要声明一个维度却不指定表,Mondrian 会认为这些列是来自事实表。
<Cube name="Checkout">
<Table name="checkout">
<Dimension name="Payment method">
<Hierarchy hasAll="true">
<!-- 这里没有Table 元素 -->
<Level name="Payment method" column="payment_method" uniqueMembers="true"/>
</Hierarchy>
</Dimension>
<!-- 其他维度和度量-->
</Cube>
注意:
由于没有连接,Dimension 的foreignKey 属性是不必要的,并且Hierarchy 元素没有Table 子元素或primaryKey 属性。
上传Saiku后分析速度也块了。
Schema文件
<Schema name="FinSchema" description="财务模式" measuresCaption="财务模式">
<Cube name="BalanceCube" caption="资产负债Cube" visible="true" description="资产负债Cube" cache="true" enabled="true">
<Table name="资产负债视图" schema="dbo">
</Table>
<Dimension type="StandardDimension" visible="true" highCardinality="false" name="组织" caption="组织编码">
<Hierarchy visible="true" hasAll="true" allMemberName="所有组织" allMemberCaption="所有组织">
<Level name="组织编码" visible="true" column="组织编码" nameColumn="组织名称" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
</Level>
<Level name="组织名称" visible="true" column="组织名称" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
</Level>
</Hierarchy>
</Dimension>
<Dimension type="StandardDimension" visible="true" highCardinality="false" name="年">
<Hierarchy name="YearHierarchy" visible="true" hasAll="true" allMemberName="所有年" allMemberCaption="所有年">
<Level name="年" visible="true" column="年" type="Integer" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
</Level>
<Level name="期间" visible="true" column="期间" type="Integer" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
</Level>
</Hierarchy>
</Dimension>
<Dimension type="StandardDimension" visible="true" highCardinality="false" name="账簿">
<Hierarchy name="BookHierarchy" visible="true" hasAll="true" allMemberName="所有账簿" allMemberCaption="所有账簿">
<Level name="账簿名称" visible="true" column="账簿名称" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
</Level>
</Hierarchy>
</Dimension>
<Dimension type="StandardDimension" visible="true" highCardinality="false" name="项目分类">
<Hierarchy name="ItemTypeHierarchy" visible="true" hasAll="true" allMemberName="所有分类" allMemberCaption="所有分类">
<Level name="项目分类" visible="true" column="项目分类" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
</Level>
</Hierarchy>
</Dimension>
<Dimension type="StandardDimension" visible="true" highCardinality="false" name="项目名称">
<Hierarchy name="ItemHierarchy" visible="true" hasAll="true" allMemberName="所有项目" allMemberCaption="所有项目">
<Level name="项目名称" visible="true" column="项目名称" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
</Level>
</Hierarchy>
</Dimension>
<Measure name="年初数" column="年初数" aggregator="sum" visible="true">
</Measure>
<Measure name="期末数" column="期末数" aggregator="sum" visible="true">
</Measure>
</Cube>
</Schema>
更多推荐
已为社区贡献3条内容
所有评论(0)