2016-10-04 85 views
0

我在DAX中使用SUMMARIZE(... ROLLUP ...),它在T-SQL中完成與 GROUP BY ROLLUP()相同的操作,並且非常好。DAX相當於GROUP BY CUBE()

是否存在與 GROUP BY CUBE()相同的DAX語句?我想要得到彙總的所有其他排列。

這裏是一個嘲弄了例子,希望這將是有意義

EVALUATE SUMMARIZE(Invoices , ROLLUP([Customer], [Product], [Year]) , 
"Orders", DISTINCTCOUNT(Invoices[Order ID])) 

將返回這些細分

Customer Product  Year 
NULL  NULL   NULL 
Smith NULL   NULL 
Smith Bikes   NULL 
Smith Bikes   2015 
Smith Bikes   2016 
Smith Treadmills  NULL 
Smith Treadmills  2015 
Smith Treadmills  2016 

但我想看到什麼是

Customer Product  Year 
NULL  NULL   NULL 
Smith NULL   NULL 
NULL  Bikes   NULL 
Smith Bikes   NULL 
NULL  Bikes   2015 
NULL  Bikes   2016 
NULL  Treadmills  2015 
NULL  Treadmills  2016 
NULL  NULL   2015 
NULL  NULL   2016 
Smith Bikes   2015 
Smith Bikes   2016 
NULL  Treadmills  NULL 
Smith Treadmills  NULL 
Smith Treadmills  2015 
Smith Treadmills  2016 

感謝。

+0

我不確定,但認爲您可以使用ADDCOLUMNS,SUMMARIZE和ROLLUP的混合來獲得由CUBE生成的相同輸出。你的數據和你的預期表是什麼? –

+0

感謝您的回覆。我爲我的問題添加了一個例子。 – BethS

回答

0

您可以使用ROLLUP多次生成三個不同的表來模擬多維數據集粒度。

ROLLUP ([Customer], [Product], [Year])
ROLLUP ([Product], [Year], [Customer])
ROLLUP ([Year], [Customer], [Product])

雖然這會產生三個表,有必要UNION他們,並從最終的表中刪除重複的,因爲它重複了一些總的和小計行,所以你必須使用DISTINCT功能。

最終DAX表達式應該是這樣的:

EVALUATE 
DISTINCT (
    UNION (
     SELECTCOLUMNS (
      SUMMARIZE (
       Invoices, 
       ROLLUP ([Customer], [Product], [Year]), 
       "Orders", DISTINCTCOUNT (Invoices[Order ID]) 
      ), 
      "Customer", [Customer], 
      "Product", [Product], 
      "Year", [Year], 
      "Orders", [Orders] 
     ), 
     SELECTCOLUMNS (
      SUMMARIZE (
       Invoices, 
       ROLLUP ([Product], [Year], [Customer]), 
       "Orders", DISTINCTCOUNT (Invoices[Order ID]) 
      ), 
      "Customer", [Customer], 
      "Product", [Product], 
      "Year", [Year], 
      "Orders", [Orders] 
     ), 
     SELECTCOLUMNS (
      SUMMARIZE (
       Invoices, 
       ROLLUP ([Year], [Customer], [Product]), 
       "Orders", DISTINCTCOUNT (Invoices[Order ID]) 
      ), 
      "Customer", [Customer], 
      "Product", [Product], 
      "Year", [Year], 
      "Orders", [Orders] 
     ) 
    ) 
) 

最終的結果應該是這樣的:

Customer Product  Year Orders 
Smith  Bikes  2015  2 
Smith  Bikes  2016  2 
Smith  Treadmills 2016  1 
Smith  Bikes    4 
Smith  Treadmills    1 
Smith       5 
            5 
      Bikes  2015  2 
      Bikes  2016  2 
      Treadmills 2016  1 
      Bikes    4 
      Treadmills    1 
Smith     2015  2 
Smith     2016  3 
         2015  2 
         2016  3 

讓我知道,如果這有助於。