MDX 一个维度成员判断、选择其一的问题,不规则形状的 查询

freewing 2016-05-27 03:36:10

实事数据,有USD金额度量值,数据是以月为单位采集,一次采集后(数据版本1),可能过几个月,数据会有修正,因此,需要再次将修正后的数据导入数据库(仍然以月为单位,此处假设最多更新一次,即:数据版本2)
统计时,要求以最新版本数据优先进行运算,如:1月和2月有版本2数据,3-12月只有版本1数据,涉及到1、2月运算,用版本2,其它月用版本1。
为此,创建了一个[数据版本]维度,测试数据准备如下:(为了方便判断,1、2月添加的 数据版本2 测试数据,是版本1数据的一半)


上图MDX查询如下图:


/*上图代码:
金额USD前有下划线,是因为统计时要根据情况转换成万或亿等单位,加下划线,便于定义计算成员时使用不带下划线的名字,不知道是否还有更好的方法*/
WITH
MEMBER [Measures].[__金额USD] AS [Measures].[_金额USD]
MEMBER [Measures].[USD金额] AS round([Measures].[__金额USD]/10000,1),FORMAT_STRING ='#;;;-',SOLVE_ORDER=1
MEMBER [Measures].[__金额USD上期] AS ([Measures].[__金额USD],ParallelPeriod([时间].[年].[年],1,[时间].[年].CurrentMember)),SOLVE_ORDER=1
MEMBER [Measures].[USD上期金额] AS round([Measures].[__金额USD上期]/10000,1),SOLVE_ORDER=2
MEMBER [Measures].[USD同比] AS ([__金额USD]-[__金额USD上期])/[__金额USD上期],FORMAT_STRING='0.0%;;;-',SOLVE_ORDER=300
MEMBER [Measures].[USD环比] AS ([Measures].[__金额USD]/([Measures].[__金额USD],([时间].[月].CurrentMember.PrevMember),[时间].[时间].CurrentMember)-1),FORMAT_STRING='0.0%;;;-',SOLVE_ORDER=300

SELECT
{ [数据版本].[数据版本].&[0],[数据版本].[数据版本].&[1] }
*
{ [Measures].[USD金额],[Measures].[USD同比],[Measures].[USD环比] } ON COLUMNS
,
{ [时间].[月].members } ON ROWS
FROM [CUBE]

尝试一:为了实现想要的效果,尝试把上面的 MEMBER [Measures].[__金额USD] 改成:

MEMBER [Measures].[__金额USD] AS
case [数据版本].[数据版本].CurrentMember
when [数据版本].[数据版本].&[0] Then ([数据版本].[数据版本].&[0],[Measures].[_金额USD])
when [数据版本].[数据版本].&[1] Then IIF(
([数据版本].[数据版本].&[1],[Measures].[_金额USD])
,([数据版本].[数据版本].&[1],[Measures].[_金额USD])
,([数据版本].[数据版本].&[0],[Measures].[_金额USD])
)
Else "Null"
End

获得结果:

很显然,[All]计算有问题,进一步,增加两个[合计]的计算成员(发下),试了一下聚合:
 member [时间].[月].[sum合计] as sum([时间].[月].[月].members,[Measures].CurrentMember),SOLVE_ORDER=1000
member [时间].[月].[Aggregate合计] as Aggregate([时间].[月].[月].members,[Measures].CurrentMember),SOLVE_ORDER=1000

结果如下:


到此,不知道该怎么办了,:( ,请哪位大神指条路吧,谢谢!

...全文
1118 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
freewing 2016-05-27
  • 打赏
  • 举报
回复
目前,打算用:导入新版本数据和旧版本数据之间的“差”的方法来解决计算问题。

7,388

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 数据仓库
社区管理员
  • 数据仓库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧