[英]MDX calculated Member not allowed multiple hierarchy tuple
我使用sql表在SSAS多维数据集中的值的每个维度上生成过滤器。
MDX查询基于下面的查询列,计算得出的成员是:
AGGREGATE
(
IIF(Query= "" or ISEMPTY(Query),
[Code].[_KeyQuery].[ALL],
StrToTuple('('+ Query+')')
),[Measures].[Value]
)
我必须在Excel中使用数据透视表。 它运行完美,该值已在每个维成员上正确过滤。 如果我使用这样的查询,就可以了。
[Level].[LevelCode].&[A],[Status].[StatusCode].&[ST]
但是现在我需要添加对多个维度成员进行过滤的可能性。 例如,使用查询:
[Level].[LevelCode].&[A],[Level].[LevelCode].&[X],[Status].[StatusCode].&[ST]
它不起作用,我尝试像这样更改查询:
{[Level].[LevelCode].&[A],[Level].[LevelCode].&[X]},[Status].[StatusCode].&[ST]
但是StrToTuple()函数会导致错误。 我不知道如何为同一个维度层次结构过滤多个值。
如果它将始终是一个元组,则无需使用AGGREGATE,只需一个元组应返回值:
IIF(
Query= "" OR ISEMPTY(Query),
(
[Code].[_KeyQuery].[ALL]
,[Measures].[Value]
)
,StrToTuple('('+ Query +',[Measures].[Value])')
)
或此版本:
StrToTuple(
'('
+ IIF(
Query= "" OR ISEMPTY(Query)
,[Code].[_KeyQuery].[ALL]
,Query
)
+',[Measures].[Value])'
)
元组和集合之间可能的决策方法
向您的控制表“ TupleOrSet”添加一列,其值为“ T”或“ S”。 然后,您可以将代码修改为以下内容:
IIF(
Query= "" OR ISEMPTY(Query),
(
[Code].[_KeyQuery].[ALL]
,[Measures].[Value]
)
,IIF(
TupleOrSet = "T"
,StrToTuple('('+ Query +',[Measures].[Value])')
,AGGREGATE( StrToSet('{'+ Query +'}'), [Measures].[Value])
)
)
注意
元组是多维数据集空间中的一个确定点,因此不能由同一层次结构中的两个成员组成-这将创建不确定的坐标
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.