2016-10-04 1 views
0

나는 T-SQL에서 GROUP BY ROLLUP()과 동일하게 수행하는 DAX에서 SUMMARIZE (... 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 ([Product], [Year], [Customer])
ROLLUP ([Year], [Customer], [Product])

이 세 개의 테이블을 생성하지만, 그들 UNION 할 필요가 당신이 DISTINCT 기능을 사용할 필요가 있도록 몇 가지 전체 및 부분 합계 행을 반복하기 때문에 최종 테이블에서 중복을 제거

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

최종 DAX 표현이 있어야한다 :

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 

이 도움이되는지 알려주세요 :

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] 
     ) 
    ) 
) 

최종 결과가 같은 것을해야한다.