2017-08-22 108 views
0

在Excel Powerquery中,我有一個MDX語句來查詢分析服務。我試着引入一個iif函數(我理解它應該像if/else語句一樣工作),但它所做的只是過濾結果。如果在MDX語句中聲明

這裏是縮短了可讀性和隱私的原因我的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的]如果適用於該行或[服務]。[2級]添加得到。

+1

不確定您的iif條件應該做什麼。你能否提供一個sql樣式的例子或其他的東西來爲你重新實現? –

回答

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 ....沒有太大的幫助

爲什麼你能不能給我們所有的查詢?標記爲* ........ *的部分不幫助我們幫助您