SSAS MDX语句中CurrentMember的使用问题
0
做计算成员的时候,会根据需要经常使用Currentmember
假设一个简单的例子
某指标 定义为:
AGGREGATE(
CROSSJOIN( [维度A].[层级].currentmember ,XXXXX)
,XXXXX)
那么做MDX查询时,如:
select
[measures].[abcd] on 0,
[维度B].[层级].MEMBERS ON 1
FROM CUBE
WHERE
([维度A].[层级].[成员]
)
这种情况时,是没有问题的.
由于MDX语句的拼接是由程序根据条件情况自动拼接的,再某些情况下.会出现
WHERE({[维度A].[层级].[成员1],[维度A].[层级].[成员2],[维度A].[层级].[成员3]....})
这种情况,那么,这个指标就会报错了. 只能根据需要,重新定义一个临时成员生成新的MDX查询语句.
那么在这里请教了, 有没有什么比较好的办法.让这个计算成员的 CROSSJOIN 里 能接收到成员集合?从而达到
CROSSJOIN({MEMBERS},XXX) 的效果?
毕竟,如果能在计算成员定义里修改,比修改程序要省事得多.
拜谢!!!
假设一个简单的例子
某指标 定义为:
AGGREGATE(
CROSSJOIN( [维度A].[层级].currentmember ,XXXXX)
,XXXXX)
那么做MDX查询时,如:
select
[measures].[abcd] on 0,
[维度B].[层级].MEMBERS ON 1
FROM CUBE
WHERE
([维度A].[层级].[成员]
)
这种情况时,是没有问题的.
由于MDX语句的拼接是由程序根据条件情况自动拼接的,再某些情况下.会出现
WHERE({[维度A].[层级].[成员1],[维度A].[层级].[成员2],[维度A].[层级].[成员3]....})
这种情况,那么,这个指标就会报错了. 只能根据需要,重新定义一个临时成员生成新的MDX查询语句.
那么在这里请教了, 有没有什么比较好的办法.让这个计算成员的 CROSSJOIN 里 能接收到成员集合?从而达到
CROSSJOIN({MEMBERS},XXX) 的效果?
毕竟,如果能在计算成员定义里修改,比修改程序要省事得多.
拜谢!!!
没有找到相关结果
重要提示:提问者不能发表回复,可以通过评论与回答者沟通,沟通后可以通过编辑功能完善问题描述,以便后续其他人能够更容易理解问题.
1 个回复
天桥下的郑成功 - Hadoop大数据开发工程师、数仓架构师、熟悉数据仓库设计、Hadoop、Spark、HBase、Hive、SSIS等开发 2015-06-04 回答
赞同来自:
如果是每次需要重新过滤的话,用 Dynamic的