파이썬에서 자기란 무엇인가: 실제 사례
파이썬에서 자기란 무엇인가: 실제 사례
데이터 모델과 DAX for LuckyTemplates를 최적화할 때 수식 엔진 과 저장소 엔진 이라는 두 가지 엔진이 배후에서 실행되고 있음을 기억하면 도움이 됩니다 .
이 두 엔진은 함께 작동하여 필요한 결과를 사용자에게 다시 반환합니다. 결과 집합을 테이블 또는 척도 값의 형태로 제공합니다.
목차
포뮬러 엔진의 역할
이 문서에서는 수식 엔진에 중점을 둘 것입니다.
수식 엔진은 쿼리의 전체 아키텍처를 관리하는 최상위 엔진입니다.
쿼리를 실행하거나 계산된 열 또는 계산된 테이블을 만드는 동안 무엇을 하든 수식 엔진이 시작됩니다.
수식 엔진은 DAX뿐만 아니라 MDX에서도 수신되는 쿼리를 이해합니다. 예를 들어 Excel을 사용하는 경우 피벗 테이블을 기반으로 피벗 모델을 만들고 피벗 테이블은 실제로 MDX 언어를 사용합니다.
여기에서 수식 엔진이 시작됩니다. DAX와 MDX를 모두 이해하므로 다른 LuckyTemplates 모델을 사용할 수 있습니다. 이 데이터 모델에서 보낸 쿼리는 DAX를 사용하고 피벗 모델에서 오는 쿼리는 MDX를 사용합니다.
포뮬러 엔진 작동 방식
MDX 원본 또는 DAX 원본에서 발생하는 쿼리를 이해하는 것은 수식 엔진 성능의 한 요소일 뿐입니다. 또한 쿼리 작업에 도움이 되는 다른 단계도 거칩니다.
먼저 스토리지 엔진이 이해하는 쿼리 계획을 생성 해야 합니다 . 하위 수준 엔진인 저장소 엔진은 Excel 내부의 피벗 테이블 또는 LuckyTemplates 내부의 시각적 개체가 쿼리를 실행했는지 실제로 알지 못합니다.
쿼리 계획을 만들 때 수식 엔진은 먼저 논리적 쿼리 계획을 작성한 다음 물리적 쿼리 계획을 만듭니다. 논리적 쿼리 계획과 물리적 쿼리 계획은 서로 같아야 합니다.
물리적 쿼리 계획을 완료한 후 사용자 또는 클라이언트 도구는 결과 집합을 가져옵니다. 거기에서 클라이언트 도구는 최종 결과를 사용자에게 표시하기 위해 결과 또는 데이터 세트를 사용하는 방법을 지시합니다.
포뮬러 엔진의 주요 제한 사항
수식 엔진은 DAX Studio를 사용하여 LuckyTemplates용 DAX를 최적화할 때 큰 역할을 합니다. 그러나 몇 가지 제한 사항도 있습니다.
첫째, 수식 엔진은 시스템에서 사용 가능한 CPU 코어 수에 관계없이 항상 단일 코어를 사용하여 전체 작업을 관리합니다 .
작업 관리자를 열면 CPU에 6개의 코어가 있는 것을 볼 수 있습니다.
이러한 사실에도 불구하고 공식 엔진은 작업할 6개 코어 중 하나를 선택하고 나머지는 스토리지 엔진에서 사용합니다.
둘째, 수식 엔진은 데이터베이스에 직접 액세스할 수 없습니다 . 이러한 제한으로 인해 내부 메모리 내부에 데이터를 저장하거나 데이터베이스에 저장하고 해당 데이터베이스에 대해 DirectQuery를 만들 수 있습니다.
또한 데이터 캐시 형태로 데이터를 가져오기 위해 스토리지 엔진에 의존합니다. 그런 다음 수식 엔진은 최종 사용자에게 결과를 제공하기 전에 해당 데이터 캐시를 반복하여 진행합니다.
Formula Engine이 LuckyTemplates를 위해 DAX를 최적화하는 방법
경우에 따라 데이터 모델 또는 LuckyTemplates용 DAX를 최적화하려고 할 때 스토리지 엔진이 쿼리를 실행할 때 속도가 느려지는 것을 알 수 있습니다. 이 경우 전체 계산을 완료하는 데 수식 엔진을 사용하여 프로세스를 최적화할 수 있습니다.
수식 엔진이 자체적으로 전체 테이블을 작성하는 경우 이전에 실행한 쿼리와 유사한 경우 프로세스에서 생성된 결과 집합은 클라이언트 도구에서 생성되는 후속 쿼리에 사용되지 않습니다 . 그러나 스토리지 엔진이 데이터 캐시를 제공하는 경우 클라이언트 도구에서 오는 요청을 최적화할 수 있도록 특정 데이터 캐시를 메모리에 보관할 수 있습니다.
어떻게 작동합니까?
저장소 엔진에 의해 완전히 실행되지만 수식 엔진에 의해 계산되는 일부 측면이 있는 쿼리를 작성한다고 가정해 보겠습니다. 이 경우 스토리지 엔진은 데이터 캐시를 수식 엔진으로 다시 보내고 해당 데이터 캐시(단순한 경우)는 메모리에 보관할 수 있습니다.
이제 몇 초 후에 유사한 쿼리가 오면 전체 데이터 모델을 다시 한 번 스캔하는 대신 수식 엔진 또는 스토리지 엔진이 특정 데이터 캐시를 사용하여 쿼리 시간을 줄이고 사용자 경험을 향상시킬 수 있습니다. 향상.
포뮬러 엔진의 부하 감소
다시 말하지만 수식 엔진은 DAX 및 MDX 코드를 이해합니다.
, 및 기타 작업을 사용하는 경우 수식 엔진은 DAX 언어 내에서 사용 중인 모든 함수를 알고 자체적으로 모든 문제를 해결할 수 있습니다. 그러나 이것은 특히 수식 엔진이 단일 코어를 사용하여 모든 작업을 수행하려고 하기 때문에 쿼리 성능에 영향을 미칠 수 있습니다.
그렇기 때문에 공식 엔진의 부하를 줄이고 스토리지 엔진의 부하를 늘리는 것도 염두에 두어야 합니다.
사용하는 것입니다 .
CROSSJOIN을 사용하면 제한된 양의 데이터만 스토리지 엔진을 통해 전달됩니다. 나머지 계산은 모두 수식 엔진에서 수행됩니다. 이에 비해 SUMMARIZE를 사용한다는 것은 스토리지 엔진 내에서 전체 쿼리를 실행하는 것을 의미합니다.
물론 이것은 SUMMARIZE가 사용되는 방식에 따라 다릅니다.
SUMMARIZE를 가장 안쪽 함수로 사용하면 당연히 스토리지 엔진으로 푸시다운됩니다. 그러나 어떤 경우에는 수식 엔진이 작동해야 하는 다른 코드와 함께 SUMMARIZE가 사용됩니다. 이 경우 수식 엔진이 개입하여 작업을 수행합니다.
부하가 어디로 가는지 알면 쿼리 성능을 최적화하는 데 도움이 될 수 있습니다. 특히 사용 중인 엔진의 용량과 제한 사항을 염두에 둘 때 그렇습니다.
LuckyTemplates를 위해 DAX를 최적화하는 데 도움이 되는 도구
DAX를 최적화하는 도구를 최대화하면 DAX 최적화가 더 쉬워집니다. DAX Studio는 이러한 도구 중 하나입니다.
SUMMARIZE 함수를 사용할 때 수식 엔진이 계산을 완료하는 전체 로드를 담당하는 앞의 예를 살펴보겠습니다. DAX Studio는 SUMMARIZE를 스토리지 엔진에 푸시하는 방식으로 코드를 재작성하여 수식 엔진의 부하를 줄이는 데 도움이 될 수 있습니다. 이렇게 하면 잠재적으로 데이터 모델 및 쿼리의 성능이 향상됩니다.
물론 이것은 간단한 쿼리에 대해 원활하게 작동해야 합니다. 더 복잡한 시나리오도 있습니다.
예를 들어 데이터 모델 자체 내에서 두 개의 스토리지 엔진을 사용하는 복합 모델을 구축할 수 있습니다. 하나는 Vertipaq용이고 다른 하나는 DirectQuery용일 수 있습니다. 이 경우 생성된 쿼리가 해당 특정 관계형 데이터 모델에 대해 작성되는 방식으로 데이터베이스를 최적화해야 합니다.
날짜 모델 내에 Products 테이블과 Sales 테이블이라는 두 개의 테이블이 있다고 가정해 보겠습니다. Products 테이블은 Vertipaq 저장소에 있는 반면 Sales 테이블은 더 큰 테이블이므로 DirectQuery 연결을 통해 데이터베이스 내부에 직접 저장됩니다.
또한 Brand 열과 DirectQuery 연결 내의 Sales 테이블에서 가져온 Total Sales 측정값을 매트릭스로 끌어오고 있다고 가정해 보겠습니다.
이 경우 수식 엔진은 두 엔진 간의 작업을 수행해야 합니다.
먼저 Products 테이블에서 제품 키 및 브랜드 열을 검색합니다. 그런 다음 Sales 테이블에서 Net Price, Quantity 및 Product Key 열을 검색합니다. Vertipaq과 DirectQuery 모두에서 데이터 캐시를 갖게 되면 수식 엔진은 데이터 캐시를 가져와 결합하여 최종 사용자에게 결과를 제공해야 합니다.
DAX 쿼리 최적화 기술 및 학습
쿼리 성능 및 DAX Studio 설정
DAX 최적화: 숨겨진 DAX 함정을 찾을 수 있는 위치
결론
수식 엔진은 DAX로 작업할 때 정말 큰 역할을 합니다. 그러나 시작하기 전에 먼저 작동 방식을 이해하는 것이 중요합니다. 수식 엔진과 스토리지 엔진이 원활하게 함께 작동하도록 만드는 방법을 마스터하는 것이 특히 DAX 쿼리의 성능을 향상시키려는 경우 중요합니다.
Analysis Services 아키텍처 내부의 최상위 엔진인 수식 엔진은 많은 작업을 수행해야 합니다. 그러나 스토리지 엔진의 기능을 이해하고 나면 스토리지 엔진에 밀어넣을 작업과 공식 엔진 내에 남겨둘 작업을 파악할 수 있습니다.
별도의 자습서에서 스토리지 엔진에 대해 자세히 살펴보겠습니다.
모두 제일 좋다,
파이썬에서 자기란 무엇인가: 실제 사례
R의 .rds 파일에서 개체를 저장하고 로드하는 방법을 배웁니다. 이 블로그에서는 R에서 LuckyTemplates로 개체를 가져오는 방법도 다룹니다.
이 DAX 코딩 언어 자습서에서는 GENERATE 함수를 사용하는 방법과 측정값 제목을 동적으로 변경하는 방법을 알아봅니다.
이 자습서에서는 다중 스레드 동적 시각적 개체 기술을 사용하여 보고서의 동적 데이터 시각화에서 통찰력을 만드는 방법을 다룹니다.
이 기사에서는 필터 컨텍스트를 살펴보겠습니다. 필터 컨텍스트는 모든 LuckyTemplates 사용자가 처음에 배워야 하는 주요 주제 중 하나입니다.
LuckyTemplates Apps 온라인 서비스가 다양한 소스에서 생성된 다양한 보고서 및 인사이트를 관리하는 데 어떻게 도움이 되는지 보여주고 싶습니다.
LuckyTemplates에서 측정 분기 및 DAX 수식 결합과 같은 기술을 사용하여 수익 마진 변경을 해결하는 방법을 알아봅니다.
이 자습서에서는 데이터 캐시의 구체화 아이디어와 결과 제공 시 DAX 성능에 미치는 영향에 대해 설명합니다.
지금까지 Excel을 계속 사용하고 있다면 지금이 비즈니스 보고 요구 사항에 LuckyTemplates를 사용하기 시작하는 가장 좋은 시기입니다.
LuckyTemplates 게이트웨이란? 당신이 알아야 할 모든 것