DAX - COUNTROWS & DISTINCT

2020. 10. 29. 14:32엑셀/파워피벗 공부

728x90
반응형

이번 포스팅은 DAX - COUNTROWS & DISTINCT 를 이용하여 건수를 표현하는 방법을 소개합니다. 

실적 데이터를 가지고 각 실적항목이 몇가지 종류로 구성되어 있는지 확인하는 것이 중요한 저에게는 매우 유익한 함수입니다. 이걸 사용할 수 없다면 피벗을 돌려 건수를 세고 또 LOOKUP을 걸어 표를 확장하는 등의 일들이 계속 수행되어야 겠죠. 하지만 파워피벗의 이 두가지 함수를 이용한 측정값으로 보다 쉽게 해결 됩니다. 

지금 부터 제가 지금까지 일반 피벗으로 작업하던 방식과 파워피벗을 사용하는 새로운 방식을 비교하며 소개를 진행하겠습니다. 

자. 아래 표는 일자/ 제품/ 매장명 별로 판매수량이 구성된 데이터입니다. 

데이터 건수는 3만5천 건 정도 됩니다. 제가 알고 싶은것은 판매된 제품의 종류입니다. 

1. 그냥 하던 대로 한다면 

 피벗테이블을 만든다. > 제품을 행 항목에 넣는다. > 제품열을 선택하여 데이터 건수를 확인한다. 

이런 식으로 종류가 1,349건임을 확인합니다. 단순히 제품의 종류를 세는 것은 간단하죠.

문제는 그 다음입니다. 저는 제품이 몇개의 매장에서 판매되었는지도 필요합니다. 그래서 매장명을 행 영역에 추가 합니다. 

가장 위의 제품만 봐도 이건 원하는 값이 아님을 알 수 있습니다. 일반 피벗테이블에서는 개수를 합산하는 것 만 가능합니다. 따라서 동일 제품이 1개의 매장에서 여러번 판매되면 그 숫자를 모두 카운트 하게 됩니다.

피벗 테이블에서 제품을 빼면 'Contoso Albany Store' 매장에는 '89'로 값이 표현되지만 이것은 제품의 수가 아니라 판매건수가 됩니다. 

결국 저는 이 모양의 피벗을 값 복사 하여 다시 피벗을 돌려야 원하는 값을 얻을 수 있습니다. 

하지만 파워 피벗에서는 어떻게 다를 까요? 

2. 파워 피벗으로 한다면 

먼저 데이터모델에 데이터를 추가하고 아래와 같이 측정값을 만듭니다. 

=COUNTROWS(DISTINCT('표1'[제품])) 

COUNTROWS : COUNTROWS 함수는 지정된 테이블 또는 식으로 정의된 테이블의 행 수를 계산합니다.

DISTINCT : 지정된 열의 고유 값이 포함되어 있는 단일 열 테이블을 반환합니다. 즉, 중복 값은 제거되고 고유 값만 반환됩니다.

COUNTROWS는 행수를 계산하는 함수이고 여기에 DISTINCT로 고유 값만 넣어주게되면 지정된 필드의 고유값들의 수를 반환하는 구조입니다. 

제품/매장명 별로 모두 '1' 로 구성됩니다. 여기서 제품 필드를 피벗테이블에서 제거하면 

 'Contoso Albany Store' 매장에는 '86'으로 제대로된 값이 표현됩니다.

이제 피벗테이블만으로 각 매장에 몇 종류의 제품이 판매되었는지 한눈에 알 수 있습니다. 

피벗 테이블의 측정값을 더블클릭하여 DATA를 확인해보면 

'89' 건의 판매건이 있음을 확인 할 수 있습니다. 

파워피벗_COUNTROWS_01.xlsx
2.67MB

 

추가) DISTINCTCOUNT 함수가 있습니다. 몰랐네요 ㅡㅡ; 

동일한 기능이 수행됩니다. 식이 더 간단해집니다. 참고하세요. 

728x90
반응형