SharePoint의 계산된 열 | 개요
SharePoint에서 계산된 열의 중요성과 목록에서 자동 계산 및 데이터 수집을 수행하는 방법을 알아보세요.
DAX 함수를 사용해서는 안 되는 이유를 살펴보고 원하는 동일한 결과를 얻을 수 있는 몇 가지 대체 솔루션을 제공합니다. 이 블로그 하단에서 이 튜토리얼의 전체 비디오를 볼 수 있습니다 .
DAX에서 범주별 평균을 얻는 것은 이상하게 복잡합니다. CALCULATE 함수를 사용하여 이러한 계산을 해결함으로써 새로운 DAX 사용자는 DAX 코드를 이해하기가 예상보다 더 어렵다는 것을 알 수 있습니다. 좋은 소식은 이 문제에 대한 더 간단한 해결책이 있다는 것입니다.
목차
CALCULATE DAX 기능 개요
몇 달 전 LuckyTemplates를 위한 에서 발표했습니다 . DAX에 대한 몇 가지 대안적인 견해를 제공한 DAX 반문화(DAX Counterculture)라고 불렸습니다.
주요 기능 중 하나는 CALCULATE 기능의 사용과 관련이 있습니다. 특히 DAX를 처음 사용하는 경우 CALCULATE를 사용하면 안 되는 이유에 대해 이야기했습니다.
CALCULATE는 이해하고 사용하기에 정말 복잡한 함수입니다. 그것은 당신의 데이터 모델에 대해 특정한 가정을 하고 당신을 많은 문제에 빠뜨릴 수 있습니다.
단일 테이블 상황에서 작동하지 않고 제대로 작동하려면 스타 스키마가 필요하기 때문에 Running Total에 대한 Microsoft의 빠른 측정 도 파헤쳤습니다 .
그래서 CALCULATE 없이 스타 스키마든 단일 테이블 모델이든 상관없이 작동하는 더 쉬운 대안을 보여주었습니다.
DAX 수식 계산
이 블로그에서는 범주별 평균 이라는 빠른 측정을 탐구합니다 . LuckyTemplates Desktop에 있는 경우 필드 창으로 이동하여 새 빠른 측정을 만들어 시작합니다 .
팝업되는 빠른 측정 창의 계산 드롭다운 에서 범주별 평균을 선택합니다 . 그런 다음 ? 기본 값 텍스트 필드 의 값 및 범주 필드 의 월 .
그런 다음 확인을 클릭 하면 다음과 같은 시각적 개체가 나타납니다.
x축에는 분기(1, 2, 3, 4분기)가 있습니다.
그리고 아래에 표시된 월별 값을 합산한 다음 해당 값의 평균을 구합니다. 요컨대, 우리 블로그의 주제인 범주별 평균입니다.
이에 대한 데이터 모델은 매우 간단합니다. Dates , 무작위로 생성된 Values , Month , MonthSort 및 Quarters 가 별도의 열에 있는 테이블이 있습니다 .
Calendar Table, Month, MonthSort 및 Quarter가 있는 날짜 테이블 에도 동일한 항목이 있습니다 . 즉, 날짜 테이블이나 첫 번째 테이블에서 분기 또는 월을 선택할 수 있습니다.
Average Per Category의 좋은 소식은 단일 테이블 모델이 있든 스타 스키마가 있든 관계없이 실제로 작동한다는 것입니다.
이 시각적 개체에서는 첫 번째 테이블의 분기를 사용하고 있습니다…
... 이것은 날짜 테이블의 분기를 사용하는 반면. 어느 쪽이든 작동합니다.
그러나 Average Per Category의 문제는 단순히 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는 포함되지 않습니다.
SUMMARIZE를 비판하는 블로그 기사를 접할 수 있습니다. 블로그에서는 SUMMARIZE가 내부적으로 작동하는 방식이 꽤 복잡하다고 말합니다.
또한 특정 사례에서 문제가 발생할 수 있지만 절대 문제가 발생하지 않을 것임을 시사합니다. 이는 계산에 매우 복잡한 계산과 매우 큰 테이블이 포함된 경우에만 발생합니다. 그래야만 SUMMARIZE가 놀라운 결과를 제공합니다.
적어도 그것이 블로그 기사가 주장하는 것입니다. SUMMARIZE를 피하고 싶다면 괜찮습니다. 이 경우 대신 함수를 사용하십시오.
GROUPBY 함수 사용
아무도 GROUPBY 함수를 사용하는 데 문제가 없으므로 그 사용 방법도 알아봅시다. 다시 VAR_Table을 사용하여 Table 변수를 만듭니다 . 그런 다음 월을 GROUPBY 하고 값 열을 만듭니다.
다음으로 GROUPBY가 작동하는 방식인 CURRENTGROUP을 사용하여 적용합니다 . 가치를 합산하고 AVERAGEX를 다시 살펴보겠습니다 .
코드는 다음과 같아야 합니다.
결과 비교: SUMMARIZE vs GROUPBY vs CALCULATE DAX 함수
이제 우리가 수행한 바로 가기가 동일한 결과를 반환하는지 살펴보겠습니다.
아래 이미지에서 볼 수 있듯이 Better Average Per Category 로 레이블이 지정된 SUMMARIZE와 Better Average Per Category 2 로 레이블이 지정된 GROUPBY는 모두 동일한 숫자를 반환합니다.
두 공식 모두 Q1의 경우 3.4K, Q2의 경우 3.6K, Q3의 경우 3.4K, Q4의 경우 3.5K를 반환합니다. 다시 한 번 테이블에 대해 Quarters를 사용하여 단일 테이블 데이터 모델에서 작동합니다.
또한 날짜 테이블에서 분기를 사용하는 스타 스키마에서도 작동합니다.
빠른 측정 – LuckyTemplates 모델에서 사용하는 방법
LuckyTemplates 내부 계산 함수 사용
LuckyTemplates에서 GROUPBY 함수를 사용하는 효과적인 방법
결론
CALCULATE를 수식에 넣기 위해 뒤틀린 컨텍스트 논리를 강요할 필요가 없습니다. 간단한 표준 DAX 함수를 사용하기만 하면 동일한 결과를 얻을 수 있습니다.
실제로 80% – 90%의 경우에 CALCULATE를 사용할 이유가 전혀 없습니다. 대신 더 간단하고 논리적인 SUMMARIZE 및 GROUPBY 함수를 사용할 수 있습니다.
이 PBIX 파일을 탐색하려는 경우 이미 Quick Measures Gallery에 게시하고 파일 이름을 Better Average Per Category 로 지정했습니다 . 페이지를 끝까지 스크롤하여 다운로드할 수 있는 PBIX 파일을 찾고 직접 플레이해 보세요.
모두 제일 좋다,
그렉 데클러
SharePoint에서 계산된 열의 중요성과 목록에서 자동 계산 및 데이터 수집을 수행하는 방법을 알아보세요.
컬렉션 변수를 사용하여 Power Apps에서 변수 만드는 방법 및 유용한 팁에 대해 알아보세요.
Microsoft Flow HTTP 트리거가 수행할 수 있는 작업과 Microsoft Power Automate의 예를 사용하여 이를 사용하는 방법을 알아보고 이해하십시오!
Power Automate 흐름 및 용도에 대해 자세히 알아보세요. 다양한 작업 및 시나리오에 사용할 수 있는 다양한 유형의 흐름에 대해 설명합니다.
조건이 충족되지 않는 경우 흐름에서 작업을 종료하는 Power Automate 종료 작업 컨트롤을 올바르게 사용하는 방법을 알아봅니다.
PowerApps 실행 기능에 대해 자세히 알아보고 자신의 앱에서 바로 웹사이트, 전화, 이메일 및 기타 앱과 같은 기타 서비스를 실행하십시오.
타사 애플리케이션 통합과 관련하여 Power Automate의 HTTP 요청이 작동하는 방식을 배우고 이해합니다.
Power Automate Desktop에서 Send Mouse Click을 사용하는 방법을 알아보고 이것이 어떤 이점을 제공하고 흐름 성능을 개선하는지 알아보십시오.
PowerApps 변수의 작동 방식, 다양한 종류, 각 변수가 앱에 기여할 수 있는 사항을 알아보세요.
이 자습서에서는 Power Automate를 사용하여 웹 또는 데스크톱에서 작업을 자동화하는 방법을 알려줍니다. 데스크톱 흐름 예약에 대한 포괄적인 가이드를 제공합니다.