olap分析平台的设计与实现(七)-Calculated Member&Named Set

博客围绕MDX在非税数据库中的应用展开。作者考虑更换非税历史数据库,因hs市数据可信度问题换回sz县库。介绍了MDX计算成员的三种生命周期范围,通过实例进行交叉计算比较项目变化,还提到命名集是为方便引用,过程中解决了引号错误。

本小节内容:

Calculated Member

Named Set

本想换个非税历史数据库,发现hs市非税历史数据库数据是否可信是个问题:

1、是不是所有数据进系统了?

2、维度表关联键是否随时间变化,没有配套?

换回sz县的库吧,起码2017年的数据基本可信

Dimensional Calculations As Calculated Members

目前所知:

计算表单式也许可有做同样的事情,但是,对于反复用到的技术,可以作为Calculated Members

he MDX specification allows three different lifetime scopes for calculated members:

  • Within the duration of a query (“query scope”)
  • Within the duration of a user session (“session scope”)
  • Persistent within a cube until the calculated member is dropped (“global scope”)

Analysis Services supports the first two of these scopes.

基本计算成员很简单,这里我想比较2个项目2年的间的变化,还要比较2个项目间的变化,不是吗,典型的交叉计算,这就有个优先级的问题,直接上个例子:

        String mdxStr_10 =
                "with member [Account].[v_] as" +
                        "'[Account].[Account_L].[政府性基金收入].[计提廉租住房资金]/[Account].[Account_L].[其他收入].[其他收入].[房租收入]'" +
                        " ,SOLVE_ORDER = 0" +
                        "member [Time].[Time].[增长] as '[Time].[Time].[2017]-[Time].[Time].[2016]',SOLVE_ORDER = 1"+
                " SELECT"+
                        " non empty {[Account].[Account_L].[政府性基金收入].[计提廉租住房资金]," +
                        "[Account].[Account_L].[其他收入].[其他收入].[房租收入]," +
                        "[Account].[v_]}  ON COLUMNS,"
                        +"{[Time].[Time].[2016],[Time].[Time].[2017],[Time].[Time].[增长]} ON ROWS "
                        + "FROM [Col_trade_detail]";

测试结果:

由上面的结果,可知,廉租房资金2016年是房租收入的的3倍,2017年是房租收入的2倍,可见,房租收入稳定性更高。 

过程中,报了个错误:

mondrian.parser.TokenMgrError:   Encountered: "\u2018" (8216), after : ""

好像我重新修改引号就好了

Named Set:

我理解,就是Set,给set起个名字。命名set,就是为了方便其他地方引用而已。

不多说,上例子:

        String mdxStr_11 =
                "with set [16-17年] as " +
                        "'{[Time].[Time].[2016],[Time].[Time].[2017]}' " +
                        " member [Account].[v_] as" +
                        "'[Account].[Account_L].[政府性基金收入].[计提廉租住房资金]/[Account].[Account_L].[其他收入].[其他收入].[房租收入]'" +
                        " ,SOLVE_ORDER = 0" +
                        "member [Time].[Time].[16-17增长] as '[Time].[Time].[2017]-[Time].[Time].[2016]',SOLVE_ORDER = 1"+
                        " SELECT"+
                        " non empty {[Account].[Account_L].[政府性基金收入].[计提廉租住房资金]," +
                        "[Account].[Account_L].[其他收入].[其他收入].[房租收入]," +
                        "[Account].[v_]}  ON COLUMNS,"
                        +"{[Time].[Time].[2015],[16-17年],[Time].[Time].[16-17增长]} ON ROWS "
                        + "FROM [Col_trade_detail]";

结果:

通用设计 :

公式是放到member_formula当中的。 

上一节:基本的mdx

下一节:一般计算

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值