파이썬에서 자기란 무엇인가: 실제 사례
파이썬에서 자기란 무엇인가: 실제 사례
과 모두 DAX 쿼리에서 데이터를 조작하고 분석하기 위한 강력한 도구이지만 이해해야 할 몇 가지 주요 차이점이 있습니다.
이 블로그에서는 CALCULATETABLE 함수와 DAX 스튜디오의 쿼리 계획을 살펴보고 이것이 FILTER 함수 와 어떻게 다른지 이해합니다 . 마지막에는 데이터 분석 요구에 맞는 올바른 기능을 선택하는 방법을 더 잘 이해하게 될 것입니다.
시연을 위해 아래 DAX 코드를 사용합니다.
이 코드를 실행하면 브랜드와 색상을 보여주는 테이블이 표시됩니다.
쿼리 계획 탭 에서 수식 엔진 의 CrossApply 연산자 에 해당하는 코드를 얻을 수 있습니다 .
동시에 서버 타이밍 탭에서 코드가 제품 색상과 브랜드만 검색하는 것을 볼 수 있습니다.
목차
CALCULATETABLE에 대한 DAX Studio 서버 타이밍 결과
예를 들어 빨간색 및/또는 검은색만 표시하도록 제품 색상을 필터링해 보겠습니다.
FILTER 기능을 사용하여 그렇게 할 수 있습니다. 실행하면 서버 타이밍에 FILTER 인수가 xmSQL 코드 에 적용되지 않는다고 표시됩니다 .
그러나 CALCULATETABLE 기능을 사용하는 경우 Server Timings 탭의 쿼리는 결과가 제품 색상으로 필터링되었음을 표시합니다.
DAX Studio의 CALCULATETABLE 쿼리 계획
각 기능에 대한 쿼리 계획을 살펴보겠습니다.
CALCULATETABLE은 코드의 최상위 함수이므로 어떤 요구 사항에도 의존하지 않기 때문에 논리적 쿼리 계획 의 첫 번째 줄에 있습니다.
CALCULATETABLE 함수의 쿼리 계획을 읽을 때 첫 번째 인수로 시작하지 않습니다. 먼저 사용된 필터 컨텍스트를 이해해야 합니다. 그럼 5번째 줄로 갑시다.
적용된 필터로 인해 VertiPaq 작업자가 제품 색상 열을 필요로 함 을 알 수 있습니다 . 그런 다음 이 열을 스캔하고 Not IsEmpty 필터 조합을 사용하여 각 행에 대한 제품 색상을 확인합니다.
필터 컨텍스트가 준비된 후 인수가 수행됩니다.
돌이켜 보면 FILTER 함수를 사용하면 다른 쿼리 계획이 표시되므로 필터 컨텍스트를 식별하기 전에 CROSSJOIN 인수가 수행됩니다.
이 접근 방식의 단점은 필터 조건을 스토리지 엔진으로 푸시하지 않는다는 것입니다. 수식 엔진에 큰 부담을 주는 xmSQL 내에서 WHERE 절을 사용할 수 없습니다 .
그리고 여러 테이블로 작업할 때 CROSSJOIN 함수의 필터 조합이 엄청날 것입니다. 이로 인해 DAX 코드의 성능이 느려집니다. 따라서 대부분의 경우 CALCULATETABLE 함수를 사용하는 것이 좋습니다.
따라서 수식 엔진에서 모든 계산을 수행하는 대신 XMSQL 코드의 WHERE 클래스 내부에 필터 조건을 삽입할 수 있습니다.
유사한 DAX 함수에 대한 컨텍스트 전환
서버 타이밍
이 개념은 CALCULATE 함수에도 적용할 수 있습니다. 아래의 DAX 코드를 예로 들어 보겠습니다.
측정값에는 자동으로 주위에 CALCULATE 함수가 있습니다.
이 코드를 실행하면 각 색상의 총 판매액을 보여주는 표가 표시됩니다.
Server Timings 탭에서 코드가 두 개의 쿼리를 실행하고 있음을 확인할 수 있습니다. 첫 번째 쿼리는 Products 테이블과 관련하여 Sales 테이블의 Sales 금액 합계를 계산하는 것입니다.
반면 두 번째 쿼리는 Products 테이블에서 제품 색상을 다시 검색합니다. DAX 코드의 함수 에 해당합니다 .
수식 엔진은 두 쿼리의 데이터 캐시를 나란히 배치합니다. 두 번째 데이터 캐시에서 값을 검색하여 시작한 다음 첫 번째 데이터 캐시에서 조회를 수행합니다.
쿼리 계획
쿼리 계획 탭에서 논리 쿼리 계획은 인수 때문에 제품 색상을 스캔합니다.
그런 다음 VertiPaq은 제품 색상에 따라 총 판매 금액을 합산합니다. 제품 색상 값을 동등한 필터 컨텍스트로 변환하는 컨텍스트 전환을 수행합니다.
컨텍스트 전환에 의해 생성된 필터는 쿼리 계획의 DependOnCols 속성으로 변환됩니다. VertiPaq은 총 판매액을 계산하는 데 필요한 열을 스캔한 후 판매 수량에 순 가격을 곱합니다.
그런 다음 Total Sales가 통화 데이터 형식의 형식으로 결과로 반환됩니다. 마지막으로 ADDCOLUMNS는 Color 및 Total Sales 금액을 포함하는 두 개의 열이 있는 테이블을 반환합니다.
결론
쿼리 계획마다 효율성 수준이 다를 수 있으므로 쿼리 계획은 쿼리 성능에 상당한 영향을 미칠 수 있습니다.
DAX 쿼리에서 CALCULATETABLE 및 FILTER 함수를 사용하는 경우 쿼리 계획은 특정 시나리오 및 사용 중인 특정 수식 식 및 쿼리 엔진의 기능과 같은 다양한 요소에 따라 다를 수 있습니다.
일반적으로 주어진 시나리오에 가장 효율적인 접근 방식을 결정하기 위해 다양한 쿼리 계획의 성능을 테스트하고 비교하는 것이 좋습니다.
모두 제일 좋다,
파이썬에서 자기란 무엇인가: 실제 사례
R의 .rds 파일에서 개체를 저장하고 로드하는 방법을 배웁니다. 이 블로그에서는 R에서 LuckyTemplates로 개체를 가져오는 방법도 다룹니다.
이 DAX 코딩 언어 자습서에서는 GENERATE 함수를 사용하는 방법과 측정값 제목을 동적으로 변경하는 방법을 알아봅니다.
이 자습서에서는 다중 스레드 동적 시각적 개체 기술을 사용하여 보고서의 동적 데이터 시각화에서 통찰력을 만드는 방법을 다룹니다.
이 기사에서는 필터 컨텍스트를 살펴보겠습니다. 필터 컨텍스트는 모든 LuckyTemplates 사용자가 처음에 배워야 하는 주요 주제 중 하나입니다.
LuckyTemplates Apps 온라인 서비스가 다양한 소스에서 생성된 다양한 보고서 및 인사이트를 관리하는 데 어떻게 도움이 되는지 보여주고 싶습니다.
LuckyTemplates에서 측정 분기 및 DAX 수식 결합과 같은 기술을 사용하여 수익 마진 변경을 해결하는 방법을 알아봅니다.
이 자습서에서는 데이터 캐시의 구체화 아이디어와 결과 제공 시 DAX 성능에 미치는 영향에 대해 설명합니다.
지금까지 Excel을 계속 사용하고 있다면 지금이 비즈니스 보고 요구 사항에 LuckyTemplates를 사용하기 시작하는 가장 좋은 시기입니다.
LuckyTemplates 게이트웨이란? 당신이 알아야 할 모든 것