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

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

매월 처음 N 영업일을 동적으로 비교하는 이 자습서 에서 논의된 문제를 다시 살펴보겠습니다 . 이 문제는 포럼의 LuckyTemplates 회원의 쿼리를 기반으로 합니다. 여기서 그는 주어진 달에 대해 처음 5, 10, 15 및 20 청구 가능 일(주말 및 공휴일 제외)을 동적으로 보고 비교하기를 원했습니다. 지난 달.

파워 쿼리를 사용하는 대신 DAX 코딩 언어 솔루션을 제안합니다. 이 블로그 하단에서 이 튜토리얼의 전체 비디오를 볼 수 있습니다.

첫 번째 비디오 에서는 이 문제를 해결하는 방법에 대한 파워 쿼리 솔루션을 생각해 냈습니다. 그러나 LuckyTemplates 전문가 중 한 명인 Antriksh Sharma는 깊이 파고들 가치가 있는 매우 효율적인 방법을 제시했습니다. DAX 도구 상자에서 추가 도구를 제공하는 측정값 개발에 그가 사용한 몇 가지 기술에 대해 설명합니다.

그것은 저와 이것을 본 다른 전문가들에게 확실히 도움이 되었습니다. 여러 달에 걸친 비교 가능한 영업일의 유사 비교는 일반적으로 많은 상황에서 사용할 수 있는 유용한 패턴입니다.

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

파워 쿼리에 대해 자세히 살펴보고 여기에서 Antriksh가 수행한 작업을 살펴보겠습니다. Month & Year , Total Sales , 그리고 마지막으로 우리가 개발한 what-if 매개변수를 기반으로 파워 쿼리를 사용하여 선택한 N 영업일의 Total Sales 가 있습니다 .

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

Antriksh는 이 전체 문제를 해결하기 위해 놀랍도록 짧은 조치를 사용하는 매우 다른 접근 방식을 취했습니다. 명령 의 사용이었습니다 .

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

이것은 자주 사용하지 않는 DAX 함수이지만 이러한 유형의 문제에 가장 적합합니다. SQL BI DAX 가이드를 살펴보면 GENERATE 함수는 두 개의 서로 다른 테이블을 입력으로 사용한 다음 SQL 명령 CROSS APPLY에 해당하는 작업을 수행하는 테이블 함수라고 나와 있습니다.

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

따라서 기본 테이블(Table1)을 가져와 반복한 다음 두 번째 테이블 식을 가져와 첫 번째 테이블의 각 행에 대해 평가한 다음 테이블에 출력으로 반환합니다.

Antriksh의 측정값을 가져와서 테이블에 떨어뜨려 봅시다. 지난 시간에 했던 파워 쿼리 솔루션과 정확히 같은 결과를 내는 것을 볼 수 있습니다. 그래서 그것은 훌륭하고 두 가지 측정을 아주 잘 검증합니다.

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

이 조치를 분리해 봅시다. 여기에 적용된 첫 번째 필터는 Dates[IsBusinessDay] = TRUE입니다. 이렇게 하면 확장 날짜 테이블 IsBusinessDay 필드를 기준으로 주말 및 휴일이 아닌 날짜가 모두 제거됩니다.

우리는 첫 번째 자습서 에서 이에 대해 더 많이 이야기하며 이를 휴일 테이블에 연결하는 방법도 살펴보았습니다.

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

이것의 흥미로운 부분은 실제로 두 개의 테이블 입력에 있습니다. 첫 번째 테이블은 Date 테이블에 있는 Month & Year 필드의 한 열 테이블입니다.

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

그러나 두 번째 테이블 입력에서 흥미로운 일이 발생합니다. 사용한 다음 동적 매개변수를 TOPN의 행 수로 사용했습니다.

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

Total Sales 측정값이 두 번째 테이블에 연결된 다음 첫 번째 테이블에 적용됩니다.

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

목차

DAX 코딩 언어를 사용한 복잡한 측정 이해

이와 같은 복잡한 측정이 수행하는 작업을 파악하는 가장 쉬운 방법 중 하나는 Tabular Editor 로 이동하는 것입니다 . 우리는 이 표현식을 보고 이 TOPN 표현식이 무엇을 하는지 먼저 알아낼 수 있습니다.

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

TOPN 부분을 복사하고 새 DAX 쿼리를 생성해 보겠습니다 . DAX 쿼리는 EVALUATE로 시작합니다.

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

TOPN 부분을 붙여 넣으면 판매 주문 테이블에서 처음 5개의 날짜를 가져오는 것을 볼 수 있습니다. TOPN에는 판매 테이블 내의 모든 주문 날짜 값으로 구성된 테이블이 있습니다.

이 TOPN 함수는 what-if 매개변수(이 경우 5)의 값을 가져와 판매 주문 날짜 필드에 적용합니다. 그런 다음 필터 컨텍스트 내에서 해당 필드를 기준으로 오름차순으로 처음 5개 날짜를 가져옵니다.

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

추가 필터 컨텍스트가 없는 경우 전체 테이블에서 처음 5개의 날짜만 가져옵니다.

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

@Sales 열은 적절한 필터 컨텍스트 내의 총 판매액을 TOPN 테이블에 추가하는 것입니다.

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

지금까지 월 및 연도의 첫 번째 테이블, 판매 테이블의 첫 번째 N 날짜 TOPN의 두 번째 테이블, 그리고 이와 관련된 총 매출이 있습니다.

DAX 코딩 언어에서 GENERATE 테이블 사용

이 GENERATE 테이블이 수행하는 작업을 살펴보겠습니다. 테이블 형식 편집기로 돌아가 새 DAX 쿼리를 만듭니다.

EVALUATE에서 항상 하던 것처럼 시작하여 코드의 GENERATE 부분을 붙여넣고 5를 클릭합니다.

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

첫 번째 테이블의 각 행에 대해 @Sales 함수를 사용하여 컨텍스트에서 평가된 TOPN 테이블의 5개 행과 반복 및 조인하는 것을 볼 수 있습니다.

4월에 처음 5영업일, 5월에 처음 5영업일, 6월에 처음 5영업일이 걸리는 식으로 첫 번째 테이블이 끝날 때까지 계속됩니다.

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

이것이 바로 우리에게 필요한 것이며 이제 이러한 값을 더하는 것은 상대적으로 간단한 문제가 됩니다. 결과(GENERATE 결과의 테이블 변수)가 있고 @Sales 함수를 합산해야 합니다.

컨텍스트 내에서 우리는 이제 4월의 첫 5영업일, 5월의 첫 5영업일 등을 합산하여 총 $23,737,430가 될 때까지 합산합니다. 이 경우 운영할 월 및 연도 컨텍스트가 없습니다. .

이것은 전체 @Sales 열을 합산하고 파워 쿼리 솔루션에 있는 것과 정확히 동일한 합계를 얻습니다.

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

슬라이서를 10으로 변경하면 DAX 코딩 언어를 사용하여 파워 쿼리에서 수행한 것과 동일한 결과를 동적으로 얻는 것을 볼 수 있습니다.

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

또한 변경 사항을 반영하도록 동적으로 조정되는 하단 막대 차트가 있습니다.

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

측정 제목을 동적으로 조정

제가 보여드리고 싶었던 또 다른 추가 트릭이 있습니다. what-if 매개변수에 대한 동적 조정을 생성하고 이를 측정값 제목에 동적으로 연결할 수 있습니다.

예를 들어 상단의 슬라이서를 15로 변경하면 하단의 측정값 이름이 Total Sales for the First 15 Business Days of Each Month 로 동적으로 변경됩니다 .

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

조건부 서식을 사용하여 DAX에서 이 작업을 수행하는 쉬운 방법이 있습니다 . 우리는 기본적으로 세 개의 문자열을 사용합니다. 첫 번째는 First 의 Total Sales 이고, 이를 what-if 매개변수에서 수집한 값과 연결한 다음 제목의 나머지 부분에 연결합니다.

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

그런 다음 비주얼로 이동하여 제목의 조건부 서식으로 이동하고 fx 를 클릭합니다 .

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

필드 값으로 형식을 지정하고 해당 동적 제목 측정값을 선택합니다. 이렇게 하면 what-if 매개변수의 선택이 변경됩니다.

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

결론

현재 우리가 가지고 있는 것은 DAX 코딩 언어를 사용하는 완전한 솔루션입니다. 우리는 GENERATE 기능을 사용하여 이를 수행하는 정말 창의적이고 효율적인 방법에 대해 논의했습니다. 뛰어난 DAX 지식을 우리와 공유해 준 Antriksh에게 감사를 표하고 싶습니다. 저는 그의 DAX 솔루션을 거치면서 많은 것을 배웠고 여러분도 그랬기를 바랍니다.


SharePoint의 계산된 열 | 개요

SharePoint의 계산된 열 | 개요

SharePoint에서 계산된 열의 중요성과 목록에서 자동 계산 및 데이터 수집을 수행하는 방법을 알아보세요.

Power Apps에서 변수 만들기: 컬렉션 작업

Power Apps에서 변수 만들기: 컬렉션 작업

컬렉션 변수를 사용하여 Power Apps에서 변수 만드는 방법 및 유용한 팁에 대해 알아보세요.

Microsoft Flow HTTP 트리거 | Power Automate 자습서

Microsoft Flow HTTP 트리거 | Power Automate 자습서

Microsoft Flow HTTP 트리거가 수행할 수 있는 작업과 Microsoft Power Automate의 예를 사용하여 이를 사용하는 방법을 알아보고 이해하십시오!

Power Automate 흐름: 사용법 및 유형 설명

Power Automate 흐름: 사용법 및 유형 설명

Power Automate 흐름 및 용도에 대해 자세히 알아보세요. 다양한 작업 및 시나리오에 사용할 수 있는 다양한 유형의 흐름에 대해 설명합니다.

흐름에서 Power Automate 종료 작업 제어

흐름에서 Power Automate 종료 작업 제어

조건이 충족되지 않는 경우 흐름에서 작업을 종료하는 Power Automate 종료 작업 컨트롤을 올바르게 사용하는 방법을 알아봅니다.

PowerApps 시작 기능: 앱에서 다른 서비스를 시작하는 방법

PowerApps 시작 기능: 앱에서 다른 서비스를 시작하는 방법

PowerApps 실행 기능에 대해 자세히 알아보고 자신의 앱에서 바로 웹사이트, 전화, 이메일 및 기타 앱과 같은 기타 서비스를 실행하십시오.

Power Automate의 HTTP 요청 – 소개

Power Automate의 HTTP 요청 – 소개

타사 애플리케이션 통합과 관련하여 Power Automate의 HTTP 요청이 작동하는 방식을 배우고 이해합니다.

Power Automate Desktop: 마우스 클릭 보내기 기능을 사용하는 방법

Power Automate Desktop: 마우스 클릭 보내기 기능을 사용하는 방법

Power Automate Desktop에서 Send Mouse Click을 사용하는 방법을 알아보고 이것이 어떤 이점을 제공하고 흐름 성능을 개선하는지 알아보십시오.

PowerApps 변수: 컨텍스트 및 전역 변수 식별

PowerApps 변수: 컨텍스트 및 전역 변수 식별

PowerApps 변수의 작동 방식, 다양한 종류, 각 변수가 앱에 기여할 수 있는 사항을 알아보세요.

Power Automate에서 실행할 데스크톱 흐름 예약

Power Automate에서 실행할 데스크톱 흐름 예약

이 자습서에서는 Power Automate를 사용하여 웹 또는 데스크톱에서 작업을 자동화하는 방법을 알려줍니다. 데스크톱 흐름 예약에 대한 포괄적인 가이드를 제공합니다.