LuckyTemplates의 DAX 함수 COLUMNSTATISTICS

LuckyTemplates의 DAX 함수 COLUMNSTATISTICS

DAX 함수 COLUMNSTATISTICS()의 동적 사용을 계속 탐색하고 싶습니다. 이 함수는 2021년 8월에 LuckyTemplates에 추가된 거의 완전히 문서화되지 않은 DAX 함수로, 익숙해지면 매우 흥미로운 몇 가지 매우 독특한 측면이 있습니다. . 이 블로그 하단에서 이 튜토리얼의 전체 비디오를 볼 수 있습니다.

저는 많은 실험을 했고 이 기능이 어떻게 작동하고 이 기능으로 무엇을 할 수 있는지에 대해 정말 흥미로운 새로운 사실을 배웠습니다. 이 함수에 대한 첫 번째 블로그에서 몇 가지 정적 사용에 대해 이야기했습니다. 오늘은 IntelliSense도 아직 최신 상태가 아닌 방식으로 함수를 정말 놀랍고 동적으로 사용하는 방법에 대해 이야기하겠습니다.

목차

DAX 함수 COLUMNSTATISTICS의 작동 방식

데이터 모델의 모든 테이블 및 필드에 대해 COLUMNSTATISTICS는 테이블 이름, 열 이름, 열의 최소값 및 최대값, 카디널리티 및 최대 길이가 있는 6개의 추가 필드로 구성된 테이블을 생성합니다. 많은 데이터처럼 보이지는 않지만 이것으로 할 수 있는 일이 많습니다.

LuckyTemplates의 DAX 함수 COLUMNSTATISTICS

현재 사용하고 있는 데이터는 LuckyTemplates 외부 도구에 대한 실습 데이터 세트일 뿐입니다. 5개의 차원 테이블, 팩트 테이블 및 측정값 테이블이 있는 비교적 간단한 데이터 모델입니다 . 이와 같은 모델은 추적하기 어렵지 않지만 복잡한 모델에는 훨씬 더 복잡한 데이터 세트 모니터링이 필요합니다.

복잡한 데이터 세트의 메타데이터는 필드 내 고유 값의 수인 카디널리티를 살펴보는 측면에서 훨씬 더 중요해집니다. 모델의 크기와 잠재적으로 처리 속도에 큰 영향을 미칩니다.

또한 모델을 구축할 때 테이블 수뿐만 아니라 해당 테이블의 날짜 범위를 아는 것이 도움이 됩니다. 날짜 테이블을 구축할 때 팩트 테이블의 전체 데이터 범위를 포함해야 합니다.

따라서 이 예에서는 작업 중인 이 데이터 모델에 테이블을 추가해 보겠습니다. 파워 쿼리에서 New Source 로 이동한 다음 Blank Query 로 이동합니다 . 그런 다음 고급 편집기로 이동하여 List.Dates 라는 함수를 붙여넣습니다 . 이를 사용하여 10,000의 카디널리티 테이블을 만들 것이므로 10,000개의 고유한 날짜입니다.

10,000개의 항목 목록을 반환하고 이를 테이블로 변환한 다음 해당 테이블의 이름을 바꿀 수 있습니다.

여기까지 필드를 변경할 수 있습니다. 그리고 닫기 및 적용을 클릭하면 전체 모델을 새로 고칠 필요 없이 스마트 내러티브가 동적으로 업데이트되는 것을 볼 수 있습니다(과거처럼).

이것이 완전히 역동적인 이유는 측정을 통해 모든 작업을 수행하기 때문입니다. 흥미로운 점은 많은 오류를 보여주고 있고, 함수가 너무 새로워서 IntelliSense가 제대로 집어내지 못하지만 실제로는 작동한다는 것입니다.

복잡한 DAX 측정값이 실제로 수행하는 작업을 파악하는 가장 좋은 방법이라고 생각하는 Tabular Editor 3에 대해 살펴보겠습니다.

DAX 쿼리는 스케일러가 아닌 테이블을 반환한다는 점을 기억하십시오. 따라서 이 측정값을 DAX 쿼리 로 복사하면 여기의 결과가 여전히 스케일러이기 때문에 오류가 표시됩니다 . 해당 RETURN 결과를 측정의 개별 구성 요소로 대체하는 디버깅 접근 방식을 사용할 수 있습니다 .

이 경우 이를 ColStats 로 대체합니다 . 위에서 수행한 작업은 COLUMNSTATISTICS DAX 함수를 변수에 넣는 것입니다. 이를 통해 표준 열 통계 테이블인 우리가 기대하는 것을 정확히 얻을 수 있습니다.

이제 테이블 이름 열을 살펴보고 여기에서 고유한 값을 가져와 계산하려고 합니다. 그것은 데이터 모델의 테이블 수가 될 것입니다.

먼저 ColStats 테이블에서 열을 선택하고 해당 테이블 이름 필드만 반환합니다. 일반적으로 DAX 측정값 또는 DAX 쿼리에서 앞에 테이블 이름이 있는 필드 이름을 반환하려고 합니다. 그러나 이 경우 가상으로만 존재하기 때문에 적절한 테이블 이름이 참조하는 것이 무엇인지 알 수 없습니다. 변수 이름을 테이블 이름으로 받아들이지 않는 것 같습니다.

따라서 이 경우에는 측정값처럼 보이지만 실제로는 앞에 테이블 참조가 없는 열 참조입니다. 명명법에서 혼란스럽더라도 여전히 작동합니다. 이제 이 RETURN 문을 TabCol 로 바꾸면 정확히 예상한 결과, 즉 모델 테이블 필드를 얻을 수 있습니다.

그런 다음 결과에 대해 고유한 테이블 열 수를 계산할 뿐입니다. 따라서 이를 DISTINCT(TabsCol) 로 바꾸면 7개의 테이블이 생성됩니다.

이제 가장 높은 카디널리티 테이블에서 가장 높은 카디널리티를 살펴보고 이를 어떻게 얻었는지 살펴보겠습니다. 이것은 실제로 최대 숫자뿐만 아니라 해당 숫자와 관련된 최대 속성을 찾고 있는 다양한 항목에 사용할 수 있는 중요한 패턴입니다.

이제 MaxCardinality 를 살펴보겠습니다 . 이것은 스케일러이지만, 괄호를 둘러싸는 것만으로 단일 셀 테이블로 바꿀 수 있습니다. 5를 맞추면 카디널리티 값이 10,000임을 알 수 있습니다.

이제 문제는 이것을 어떻게 가져와서 그 카디널리티와 관련된 테이블을 반환하느냐입니다.

이를 위해 사용하는 매우 일반적인 패턴을 사용합니다 . 그런 다음 이를 RETURN 문에 복사하면 예상했던 행인 10,000 날짜 열이 제공됩니다. 한 행을 가져오는 대신(TOPN이기 때문에) 동점자가 있기 때문에 두 개를 얻습니다.

또한 ColStats는 모든 테이블에 대해 테이블의 각 행에 대한 고유 식별자인 RowNumber 라는 숨겨진 인덱스 행에 인덱스를 생성합니다 . 따라서 고유 식별자인 경우 MaxCardinality는 항상 RowNumber에 의해 미러링됩니다.

따라서 우리가 보고 있는 것이 테이블 이름의 최대값이기 때문에 두 개의 행이 있는 것은 중요하지 않습니다. 그리고 그 최대값은 일부 값을 반환하기 위한 것입니다. 그러나 우리는 그 주위에 약간의 집계가 필요하며 이 경우에는 사용합니다 .

그런 다음 RETURN 문에 MaxCardinality를 배치 하고 괄호 안에 넣어 스케일러가 아닌 테이블을 반환하면 Test 값을 반환합니다.

이 TOPN DAX 패턴은 기본적으로 최대값 또는 최소값을 파악한 다음 해당 최소값 또는 최대값과 연결된 특성을 반환하려고 할 때 기억하기에 정말 좋은 패턴입니다.


고급 DAX를 사용하여 LuckyTemplates 수식 최적화 DAX
측정값 분석:
측정 분기를 사용하여 LuckyTemplates에서 긴 DAX 측정값 분류 DAX 측정값

결론

동적 방식으로 DAX 함수 COLUMNSTATISTICS를 최대한 활용하는 측면에서 사용할 수 있는 일반적인 접근 방식과 컨텍스트를 제공했습니다. 복잡한 모델의 관점에서 이것을 동적으로 추적할 수 있다는 점에서 이 기능에는 엄청난 가치가 있다고 생각합니다.

COLUMNSTATISTICS 함수와 DAX 내에서 메타데이터를 동적으로 처리하는 기능을 더 많이 실험할수록 더 흥미로운 용도를 찾을 수 있을 것 같습니다. 따라서 이 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 게이트웨이란? 당신이 알아야 할 모든 것