维度-退化维度

刚接触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="&#36130;&#21153;&#27169;&#24335;" measuresCaption="&#36130;&#21153;&#27169;&#24335;">
    <Cube name="BalanceCube" caption="&#36164;&#20135;&#36127;&#20538;Cube" visible="true" description="&#36164;&#20135;&#36127;&#20538;Cube" cache="true" enabled="true">
        <Table name="&#36164;&#20135;&#36127;&#20538;&#35270;&#22270;" schema="dbo">
        </Table>
        <Dimension type="StandardDimension" visible="true" highCardinality="false" name="&#32452;&#32455;" caption="&#32452;&#32455;&#32534;&#30721;">
            <Hierarchy visible="true" hasAll="true" allMemberName="&#25152;&#26377;&#32452;&#32455;" allMemberCaption="&#25152;&#26377;&#32452;&#32455;">
                <Level name="&#32452;&#32455;&#32534;&#30721;" visible="true" column="&#32452;&#32455;&#32534;&#30721;" nameColumn="&#32452;&#32455;&#21517;&#31216;" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
                </Level>
                <Level name="&#32452;&#32455;&#21517;&#31216;" visible="true" column="&#32452;&#32455;&#21517;&#31216;" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
                </Level>
            </Hierarchy>
        </Dimension>
        <Dimension type="StandardDimension" visible="true" highCardinality="false" name="&#24180;">
            <Hierarchy name="YearHierarchy" visible="true" hasAll="true" allMemberName="&#25152;&#26377;&#24180;" allMemberCaption="&#25152;&#26377;&#24180;">
                <Level name="&#24180;" visible="true" column="&#24180;" type="Integer" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
                </Level>
                <Level name="&#26399;&#38388;" visible="true" column="&#26399;&#38388;" type="Integer" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
                </Level>
            </Hierarchy>
        </Dimension>
        <Dimension type="StandardDimension" visible="true" highCardinality="false" name="&#36134;&#31807;">
            <Hierarchy name="BookHierarchy" visible="true" hasAll="true" allMemberName="&#25152;&#26377;&#36134;&#31807;" allMemberCaption="&#25152;&#26377;&#36134;&#31807;">
                <Level name="&#36134;&#31807;&#21517;&#31216;" visible="true" column="&#36134;&#31807;&#21517;&#31216;" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
                </Level>
            </Hierarchy>
        </Dimension>
        <Dimension type="StandardDimension" visible="true" highCardinality="false" name="&#39033;&#30446;&#20998;&#31867;">
            <Hierarchy name="ItemTypeHierarchy" visible="true" hasAll="true" allMemberName="&#25152;&#26377;&#20998;&#31867;" allMemberCaption="&#25152;&#26377;&#20998;&#31867;">
                <Level name="&#39033;&#30446;&#20998;&#31867;" visible="true" column="&#39033;&#30446;&#20998;&#31867;" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
                </Level>
            </Hierarchy>
        </Dimension>
        <Dimension type="StandardDimension" visible="true" highCardinality="false" name="&#39033;&#30446;&#21517;&#31216;">
            <Hierarchy name="ItemHierarchy" visible="true" hasAll="true" allMemberName="&#25152;&#26377;&#39033;&#30446;" allMemberCaption="&#25152;&#26377;&#39033;&#30446;">
                <Level name="&#39033;&#30446;&#21517;&#31216;" visible="true" column="&#39033;&#30446;&#21517;&#31216;" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
                </Level>
            </Hierarchy>
        </Dimension>
        <Measure name="&#24180;&#21021;&#25968;" column="&#24180;&#21021;&#25968;" aggregator="sum" visible="true">
        </Measure>
        <Measure name="&#26399;&#26411;&#25968;" column="&#26399;&#26411;&#25968;" aggregator="sum" visible="true">
        </Measure>
    </Cube>
</Schema>

 

转载于:https://www.cnblogs.com/Bruce_H21/p/10514917.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值