CALCULATE DAX 기능: 문제 및 솔루션

CALCULATE DAX 기능: 문제 및 솔루션

DAX 함수를 사용해서는 안 되는 이유를 살펴보고 원하는 동일한 결과를 얻을 수 있는 몇 가지 대체 솔루션을 제공합니다. 이 블로그 하단에서 이 튜토리얼의 전체 비디오를 볼 수 있습니다 .

DAX에서 범주별 평균을 얻는 것은 이상하게 복잡합니다. CALCULATE 함수를 사용하여 이러한 계산을 해결함으로써 새로운 DAX 사용자는 DAX 코드를 이해하기가 예상보다 더 어렵다는 것을 알 수 있습니다. 좋은 소식은 이 문제에 대한 더 간단한 해결책이 있다는 것입니다. 

목차

CALCULATE DAX 기능 개요

몇 달 전 LuckyTemplates를 위한 에서 발표했습니다 . DAX에 대한 몇 가지 대안적인 견해를 제공한 DAX 반문화(DAX Counterculture)라고 불렸습니다. 

주요 기능 중 하나는 CALCULATE 기능의 사용과 관련이 있습니다. 특히 DAX를 처음 사용하는 경우 CALCULATE를 사용하면 안 되는 이유에 대해 이야기했습니다. 

CALCULATE는 이해하고 사용하기에 정말 복잡한 함수입니다. 그것은 당신의 데이터 모델에 대해 특정한 가정을 하고 당신을 많은 문제에 빠뜨릴 수 있습니다. 

단일 테이블 상황에서 작동하지 않고 제대로 작동하려면 스타 스키마가 필요하기 때문에 Running Total에 대한 Microsoft의 빠른 측정 도 파헤쳤습니다 .

그래서 CALCULATE 없이 스타 스키마든 단일 테이블 모델이든 상관없이 작동하는 더 쉬운 대안을 보여주었습니다. 

DAX 수식 계산

이 블로그에서는 범주별 평균 이라는 빠른 측정을 탐구합니다 . LuckyTemplates Desktop에 있는 경우 필드 창으로 이동하여 새 빠른 측정을 만들어 시작합니다 .

CALCULATE DAX 기능: 문제 및 솔루션

팝업되는 빠른 측정 창의 계산 드롭다운 에서 범주별 평균을 선택합니다 . 그런 다음 ? 기본 값 텍스트 필드 의 범주 필드 의 .

CALCULATE DAX 기능: 문제 및 솔루션

그런 다음 확인을 클릭 하면 다음과 같은 시각적 개체가 나타납니다. 

CALCULATE DAX 기능: 문제 및 솔루션

x축에는 분기(1, 2, 3, 4분기)가 있습니다. 

그리고 아래에 표시된 월별 값을 합산한 다음 해당 값의 평균을 구합니다. 요컨대, 우리 블로그의 주제인 범주별 평균입니다. 

CALCULATE DAX 기능: 문제 및 솔루션

이에 대한 데이터 모델은 매우 간단합니다. Dates , 무작위로 생성된 Values ​​, Month , MonthSortQuarters 가 별도의 열에  있는 테이블이 있습니다 .

CALCULATE DAX 기능: 문제 및 솔루션

Calendar Table, Month, MonthSort 및 Quarter가 있는 날짜 테이블 에도 동일한 항목이 있습니다 . 즉, 날짜 테이블이나 첫 번째 테이블에서 분기 또는 월을 선택할 수 있습니다. 

CALCULATE DAX 기능: 문제 및 솔루션

Average Per Category의 좋은 소식은 단일 테이블 모델이 있든 스타 스키마가 있든 관계없이 실제로 작동한다는 것입니다.

이 시각적 개체에서는 첫 번째 테이블의 분기를 사용하고 있습니다…

CALCULATE DAX 기능: 문제 및 솔루션

 ... 이것은 날짜 테이블의 분기를 사용하는 반면. 어느 쪽이든 작동합니다. 

CALCULATE DAX 기능: 문제 및 솔루션

그러나 Average Per Category의 문제는 단순히 DAX 코드입니다. 

CALCULATE DAX 기능: 문제 및 솔루션

이 DAX 코드는 이상합니다. DAX 전문가라도 첫눈에 혼란스러울 수 있기 때문입니다. 필터 절이 없는 CALCULATE 문으로 이상하게 구성되었으며 sum 문만 래핑합니다. 

사실 포럼에서 CALCULATE를 사용하는 사람들이 아무 이유 없이 합계를 포장하는 것을 볼 때 그것은 내 마음에 드는 불만 중 하나입니다. 하지만 이 경우에는 실제로 이유가 있습니다.

CALCULATE 함수로 무엇을 하고 있는지 전혀 모른다는 즉각적인 표시이기 때문에 볼 때마다 마음이 흔들립니다. 그래서 오히려 멀리하는 것이 좋습니다. 

범주별 평균 DAX 코드

위에 표시된 DAX 코드는 사용합니다 . 이 함수는 CALCULATE 세그먼트에 없으므로 다시 한 번 이상합니다. 아마도 이 함수는 설명서를 기반으로 CALCULATE 문에서 사용하기 위해 만들어졌습니다.

이 코드는 동의하지 않는 도 사용합니다 . 고유 값은 일치하지 않는 행이 있는 경우 빈 행을 반환하는 경향이 있으므로 VALUES를 사용해서는 안 됩니다. 그것은 당신을 많은 문제에 빠뜨릴 수 있지만 다른 비디오의 주제입니다.

기본적으로 여기서 진행되는 것은 VALUES 함수를 사용하여 모든 범주를 가져오는 것입니다. 예를 들어 1분기는 1월, 2월, 3월입니다. 의 첫 번째 매개변수로 유효하게 만듭니다 . 

또한 KEEPFILTERS 컨텍스트 내에서 실행할 CALCULATE 함수를 유지합니다. AVERAGEX는 작동 방식 때문에 두 번째 식을 가져와 첫 번째 식의 컨텍스트 내에서 실행합니다. 

그렇다면 문제는 무엇입니까?

전반적으로 잘 작동하지만 DAX를 처음 사용하는 사람에게는 적합하지 않습니다. 빠른 측정은 DAX를 처음 사용하는 사람들을 위한 것으로 추정되기 때문에 Microsoft가 이 빠른 측정을 만들었을 때 보트를 정말 놓쳤다고 생각합니다.

빠른 측정은 "DAX를 처음 사용하고 DAX에 대해 알아야 할 모든 것을 모르기 때문에 계산이 다른 몇 가지 일반적인 측정을 작성해 보겠습니다."와 같은 좋은 아이디어입니다. 그런데 왜 그렇게 이상하고 복잡한 방식으로 그것들을 구성했을까요? 

DAX를 처음 사용하는 사람이 이것을 살펴보고 DAX 전문가도 이 문제에 대해 머리를 긁적일 때 무슨 일이 일어나고 있는지 파악하려면 어떻게 해야 합니까? 

그래서 나에게 그들은 CALCULATE를 포함하고 거기에 CALCULATE를 얻기 위해 농구를 뛰어야 한다고 주장함으로써 사람들이 빠른 측정으로 DAX를 배울 수 있도록 도울 절호의 기회를 놓쳤습니다. 

더 쉬운 솔루션

SUMMARIZE 함수 사용

앞서 언급했듯이 더 좋고 간단한 방법이 있습니다.

먼저 VAR_Table을 사용하여 테이블 변수를 만듭니다 . 사용하여 테이블을 가져와 월별로 요약하고 값 열을 만들고 값을 합산합니다.

마지막으로 AVERAGEX 함수를 사용하여 값의 평균을 구합니다 . 

CALCULATE DAX 기능: 문제 및 솔루션

이 코드는 더 간단하고 훨씬 더 논리적입니다. 어쨌든 필요하지 않은 CALCULATE는 포함되지 않습니다. 

SUMMARIZE를 비판하는 블로그 기사를 접할 수 있습니다. 블로그에서는 SUMMARIZE가 내부적으로 작동하는 방식이 꽤 복잡하다고 말합니다.

또한 특정 사례에서 문제가 발생할 수 있지만 절대 문제가 발생하지 않을 것임을 시사합니다. 이는 계산에 매우 복잡한 계산과 매우 큰 테이블이 포함된 경우에만 발생합니다. 그래야만 SUMMARIZE가 놀라운 결과를 제공합니다. 

적어도 그것이 블로그 기사가 주장하는 것입니다. SUMMARIZE를 피하고 싶다면 괜찮습니다. 이 경우 대신 함수를 사용하십시오.

GROUPBY 함수 사용

아무도 GROUPBY 함수를 사용하는 데 문제가 없으므로 그 사용 방법도 알아봅시다. 다시 VAR_Table을 사용하여 Table 변수를 만듭니다 . 그런 다음 월을 GROUPBY 하고 값 열을 만듭니다.

다음으로 GROUPBY가 작동하는 방식인 CURRENTGROUP을 사용하여 적용합니다 . 가치를 합산하고 AVERAGEX를 다시 살펴보겠습니다 . 

코드는 다음과 같아야 합니다.

CALCULATE DAX 기능: 문제 및 솔루션

결과 비교: SUMMARIZE vs GROUPBY vs CALCULATE DAX 함수

이제 우리가 수행한 바로 가기가 동일한 결과를 반환하는지 살펴보겠습니다. 

아래 이미지에서 볼 수 있듯이 Better Average Per Category 로 레이블이 지정된 SUMMARIZE와 Better Average Per Category 2 로 레이블이 지정된 GROUPBY는 모두 동일한 숫자를 반환합니다. 

CALCULATE DAX 기능: 문제 및 솔루션

두 공식 모두 Q1의 경우 3.4K, Q2의 경우 3.6K, Q3의 경우 3.4K, Q4의 경우 3.5K를 반환합니다. 다시 한 번 테이블에 대해 Quarters를 사용하여 단일 테이블 데이터 모델에서 작동합니다.

또한 날짜 테이블에서 분기를 사용하는 스타 스키마에서도 작동합니다. 

CALCULATE DAX 기능: 문제 및 솔루션


빠른 측정 – LuckyTemplates 모델에서 사용하는 방법
LuckyTemplates 내부 계산 함수 사용
LuckyTemplates에서 GROUPBY 함수를 사용하는 효과적인 방법

결론

CALCULATE를 수식에 넣기 위해 뒤틀린 컨텍스트 논리를 강요할 필요가 없습니다. 간단한 표준 DAX 함수를 사용하기만 하면 동일한 결과를 얻을 수 있습니다. 

실제로 80% – 90%의 경우에 CALCULATE를 사용할 이유가 전혀 없습니다. 대신 더 간단하고 논리적인 SUMMARIZE 및 GROUPBY 함수를 사용할 수 있습니다.

이 PBIX 파일을 탐색하려는 경우 이미 Quick Measures Gallery에 게시하고 파일 이름을 Better Average Per Category 로 지정했습니다 . 페이지를 끝까지 스크롤하여 다운로드할 수 있는 PBIX 파일을 찾고 직접 플레이해 보세요. 

모두 제일 좋다,

그렉 데클러


파이썬에서 자기란 무엇인가: 실제 사례

파이썬에서 자기란 무엇인가: 실제 사례

파이썬에서 자기란 무엇인가: 실제 사례

R에서 RDS 파일을 저장하고 로드하는 방법

R에서 RDS 파일을 저장하고 로드하는 방법

R의 .rds 파일에서 개체를 저장하고 로드하는 방법을 배웁니다. 이 블로그에서는 R에서 LuckyTemplates로 개체를 가져오는 방법도 다룹니다.

첫 N 영업일 재방문 – DAX 코딩 언어 솔루션

첫 N 영업일 재방문 – DAX 코딩 언어 솔루션

이 DAX 코딩 언어 자습서에서는 GENERATE 함수를 사용하는 방법과 측정값 제목을 동적으로 변경하는 방법을 알아봅니다.

LuckyTemplates에서 다중 스레드 동적 시각적 개체 기술을 사용한 인사이트 쇼케이스

LuckyTemplates에서 다중 스레드 동적 시각적 개체 기술을 사용한 인사이트 쇼케이스

이 자습서에서는 다중 스레드 동적 시각적 개체 기술을 사용하여 보고서의 동적 데이터 시각화에서 통찰력을 만드는 방법을 다룹니다.

LuckyTemplates의 컨텍스트 필터링 소개

LuckyTemplates의 컨텍스트 필터링 소개

이 기사에서는 필터 컨텍스트를 살펴보겠습니다. 필터 컨텍스트는 모든 LuckyTemplates 사용자가 처음에 배워야 하는 주요 주제 중 하나입니다.

LuckyTemplates 온라인 서비스에서 앱을 사용하기 위한 최고의 팁

LuckyTemplates 온라인 서비스에서 앱을 사용하기 위한 최고의 팁

LuckyTemplates Apps 온라인 서비스가 다양한 소스에서 생성된 다양한 보고서 및 인사이트를 관리하는 데 어떻게 도움이 되는지 보여주고 싶습니다.

시간 경과에 따른 이익 마진 변화 분석 - LuckyTemplates 및 DAX를 사용한 분석

시간 경과에 따른 이익 마진 변화 분석 - LuckyTemplates 및 DAX를 사용한 분석

LuckyTemplates에서 측정 분기 및 DAX 수식 결합과 같은 기술을 사용하여 수익 마진 변경을 해결하는 방법을 알아봅니다.

DAX Studio의 데이터 캐시에 대한 구체화 아이디어

DAX Studio의 데이터 캐시에 대한 구체화 아이디어

이 자습서에서는 데이터 캐시의 구체화 아이디어와 결과 제공 시 DAX 성능에 미치는 영향에 대해 설명합니다.

LuckyTemplates를 사용한 비즈니스 보고

LuckyTemplates를 사용한 비즈니스 보고

지금까지 Excel을 계속 사용하고 있다면 지금이 비즈니스 보고 요구 사항에 LuckyTemplates를 사용하기 시작하는 가장 좋은 시기입니다.

LuckyTemplates 게이트웨이란? 당신이 알아야 할 모든 것

LuckyTemplates 게이트웨이란? 당신이 알아야 할 모든 것

LuckyTemplates 게이트웨이란? 당신이 알아야 할 모든 것