파이썬에서 자기란 무엇인가: 실제 사례
파이썬에서 자기란 무엇인가: 실제 사례
이 자습서에서는 Server Timings 창과 해당 쿼리 계획을 사용하여 DAX에서 함수가 작동하는 방식을 알아봅니다 .
CROSSJOIN 함수는 두 테이블의 데카르트 곱을 만드는 데 사용할 수 있습니다. 데카르트 곱은 두 개 이상의 테이블에서 가능한 모든 행 조합의 집합입니다.
아래 DAX 코드는 이 자습서에서 사용됩니다.
이러한 조합 중 일부가 팩트 테이블 에 존재하지 않는 경우에도 CROSSJOIN 함수가 제품 브랜드 및 색상의 조합을 생성하는 것을 볼 수 있습니다 . 결과적으로 총 176개의 행이 있는 테이블이 생성됩니다.
Server Timings 탭에서 첫 번째 쿼리는 Products 테이블에서 Brand를 검색하는 반면 두 번째 쿼리는 Color를 검색합니다.
논리적 쿼리 계획 에서 첫 번째 줄은 결과를 테이블 형식으로 반환합니다. 제품 테이블의 두 번째 및 세 번째 줄은 각각 색상과 브랜드를 스캔합니다.
데이터가 수신되면 수식 엔진은 테이블을 반복하여 두 열의 조합을 생성합니다. 2행의 CrossApply는 CROSSJOIN 함수에 해당합니다.
목차
DAX에서 CROSSJOIN 결과 필터링
함수를 사용하여 CROSSJOIN 결과를 필터링 할 수 있습니다 . 예를 들어 빨간색 제품만 표시하는 데 사용할 수 있습니다.
그러나 FILTER 인수 내에 CROSSJOIN 함수를 배치할 수 없음 을 기억하십시오 .
이제 이 코드를 실행하고 서버 타이밍 탭을 확인하면 필터 컨텍스트가 쿼리에서 WHERE 절로 나타나지 않는 것을 볼 수 있습니다.
CROSSJOIN 함수는 수식 엔진 에 의해서만 해결될 수 있습니다 . Storage Engine 에서만 해결할 수 있는 기능인 FILTER와 사이에 코드가 들어와서 작동하지 않습니다 . 따라서 CROSSJOIN으로 인해 이 두 함수 사이의 루프가 중단되었습니다.
따라서 필터가 작동하려면 CROSSJOIN 인수 내에 FILTER 함수를 배치해야 합니다.
이제 이 코드를 실행하고 Server Timings 탭을 확인하면 FILTER 함수가 이제 WHERE 절로 표시되는 것을 볼 수 있습니다.
논리적 쿼리 계획에서 Filter Operator 대신 Filter VertiPaq이 사용되는 것을 볼 수 있습니다.
코드의 새 필터 조건이 스토리지 엔진으로 푸시다운될 수 있기 때문입니다. 결과가 반환된 후 CROSSJOIN 인수는 수식 엔진 내에서 수행됩니다.
IN 연산자
FILTER 인수에서 등호 대신 연산자를 사용할 수도 있습니다 .
IN 연산자는 FILTER 함수의 식 인수 내에서 값이 값 목록 또는 테이블 내에 포함되어 있는지 여부에 따라 테이블을 필터링하는 데 사용할 수 있습니다.
FILTER – IN 조합을 사용하는 경우 DAX 엔진은 제품 색상이 빨간색인지 검은색인지 확인하는 IsEmpty 필터를 수행해야 합니다.
CROSSJOIN DAX 결과에 Total Sales 열 추가
다른 기능도 CROSSJOIN과 함께 사용할 수 있습니다.
함수를 사용하여 테이블에 다른 열을 추가한 다음 표시하려는 정보의 인수를 작성할 수 있습니다.
이 예에서는 Total Sales 열을 추가해 보겠습니다.
코드를 실행하면 결과는 여전히 176개 행을 반환합니다. 그러나 일부 조합은 Total Sales 열에 빈 값이 있습니다. 이러한 조합에는 Sales 테이블에 해당 행이 없기 때문입니다.
서버 타이밍 탭에서 코드는 먼저 브랜드와 색상을 선택합니다. 그런 다음 수량과 판매 순 가격의 곱을 합산합니다.
이 경우 DAX 엔진은 먼저 Sales 테이블의 해당 행과 함께 Products 테이블 내부에 있는 브랜드 및 색상의 모든 조합을 검색합니다. 그런 다음 브랜드 및 색상 열을 별도로 검색합니다.
물리적 쿼리 계획에서 두 개의 데이터 캐시를 볼 수 있습니다. 하나는 브랜드용이고 다른 하나는 색상용입니다. 총 레코드를 곱하면 176행이 됩니다.
그런 다음 해당 176개 행에 대해 조회를 수행하여 Sales 테이블에 해당 값이 있는지 확인합니다. 111개의 행에만 값이 있음을 알 수 있습니다. 나머지 65개 행은 공백을 반환합니다.
또한 CROSSJOIN 인수에 더 많은 열을 추가하면 결과도 더 많은 행을 반환합니다.
결론
DAX CROSSJOIN 함수는 한 테이블의 행을 다른 테이블의 행과 결합하여 새 테이블을 생성합니다. 이 함수는 SQL의 CROSS JOIN 절과 유사하며 데이터 모델에서 더 복잡한 쿼리를 만드는 데 사용할 수 있습니다.
둘 이상의 테이블에서 가능한 모든 값 조합 목록을 생성할 수 있습니다. 또한 데이터 분석, 테스트 또는 성능 벤치마킹에 유용할 수 있는 많은 수의 행이 있는 새 테이블을 빠르게 만드는 데 사용할 수 있습니다.
전반적으로 CROSSJOIN 함수는 여러 테이블의 데이터를 결합하거나 가능한 모든 조합 목록을 생성해야 하는 시나리오에서 편리한 도구입니다.
모두 제일 좋다,
파이썬에서 자기란 무엇인가: 실제 사례
R의 .rds 파일에서 개체를 저장하고 로드하는 방법을 배웁니다. 이 블로그에서는 R에서 LuckyTemplates로 개체를 가져오는 방법도 다룹니다.
이 DAX 코딩 언어 자습서에서는 GENERATE 함수를 사용하는 방법과 측정값 제목을 동적으로 변경하는 방법을 알아봅니다.
이 자습서에서는 다중 스레드 동적 시각적 개체 기술을 사용하여 보고서의 동적 데이터 시각화에서 통찰력을 만드는 방법을 다룹니다.
이 기사에서는 필터 컨텍스트를 살펴보겠습니다. 필터 컨텍스트는 모든 LuckyTemplates 사용자가 처음에 배워야 하는 주요 주제 중 하나입니다.
LuckyTemplates Apps 온라인 서비스가 다양한 소스에서 생성된 다양한 보고서 및 인사이트를 관리하는 데 어떻게 도움이 되는지 보여주고 싶습니다.
LuckyTemplates에서 측정 분기 및 DAX 수식 결합과 같은 기술을 사용하여 수익 마진 변경을 해결하는 방법을 알아봅니다.
이 자습서에서는 데이터 캐시의 구체화 아이디어와 결과 제공 시 DAX 성능에 미치는 영향에 대해 설명합니다.
지금까지 Excel을 계속 사용하고 있다면 지금이 비즈니스 보고 요구 사항에 LuckyTemplates를 사용하기 시작하는 가장 좋은 시기입니다.
LuckyTemplates 게이트웨이란? 당신이 알아야 할 모든 것