在Excel Powerquery中,我有一个MDX语句来查询分析服务。我尝试引入一个iif函数(我理解它应该像if / else语句一样工作),但它只是过滤结果。
以下是出于可读性和隐私原因而缩短的MDX声明示例:
SELECT NON EMPTY { [Measures].[Revenue] } ON COLUMNS, NON EMPTY { (
[Account Information].[Name].[Name].ALLMEMBERS
* ........
* iif([Service].[Level 3] = [Service].[Level 3].[Linux],[Service].[Level 3].[Linux], [Service].[Level 2]) ) }
DIMENSION PROPERTIES MEMBER_CAPTION,MEMBER_UNIQUE_NAME ON ROWS FROM ( SELECT ( {
[Geography].[Subsidiary].&[France] } )
ON COLUMNS FROM ( SELECT ( { [Calendar].[Fiscal Date Hierarchy].[Fiscal Semester].&[FY18-H1] } )
ON COLUMNS FROM [Model])) WHERE ( [Calendar].[Fiscal Date Hierarchy].[Fiscal Semester].&[FY18-H1], [Geography].[Subsidiary].&[France] )
CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS
现在的结果是所有行都在 [服务]上进行过滤。[等级3]。[Linux] 。
我想要的结果是,如果适用于该行, [linux] 会添加一列 [Service] 。[等级2] 在所有其他情况下。
答案 0 :(得分:0)
这对我来说似乎不正确:
iif(
[Service].[Level 3] = [Service].[Level 3].[Linux]
,[Service].[Level 3].[Linux]
,[Service].[Level 2]
)
如果您要比较mdx
中的成员是否相等,那么请使用IS
运算符而不是=
:
iif(
[Service].[Level 3] IS [Service].[Level 3].[Linux]
,[Service].[Level 3].[Linux]
,[Service].[Level 2]
)
但是这个条件[Service].[Level 3] IS [Service].[Level 3].[Linux]
将始终返回False,因此您可能需要通过CURRENTMEMBER
函数使用上下文:
iif(
[Service].CURRENTMEMBER IS [Service].[Level 3].[Linux]
,[Service].[Level 3].[Linux]
,[Service].[Level 2]
)
但我仍然不知道这是怎么回事on rows
......没什么帮助
为什么你不能给我们所有的查询?!标有* ........
*
的部分无法帮助我们