첫 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 솔루션을 거치면서 많은 것을 배웠고 여러분도 그랬기를 바랍니다.


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

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

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

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 게이트웨이란? 당신이 알아야 할 모든 것