SharePoint의 계산된 열 | 개요
SharePoint에서 계산된 열의 중요성과 목록에서 자동 계산 및 데이터 수집을 수행하는 방법을 알아보세요.
데이터 모델과 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 아키텍처 내부의 최상위 엔진인 수식 엔진은 많은 작업을 수행해야 합니다. 그러나 스토리지 엔진의 기능을 이해하고 나면 스토리지 엔진에 밀어넣을 작업과 공식 엔진 내에 남겨둘 작업을 파악할 수 있습니다.
별도의 자습서에서 스토리지 엔진에 대해 자세히 살펴보겠습니다.
모두 제일 좋다,
SharePoint에서 계산된 열의 중요성과 목록에서 자동 계산 및 데이터 수집을 수행하는 방법을 알아보세요.
컬렉션 변수를 사용하여 Power Apps에서 변수 만드는 방법 및 유용한 팁에 대해 알아보세요.
Microsoft Flow HTTP 트리거가 수행할 수 있는 작업과 Microsoft Power Automate의 예를 사용하여 이를 사용하는 방법을 알아보고 이해하십시오!
Power Automate 흐름 및 용도에 대해 자세히 알아보세요. 다양한 작업 및 시나리오에 사용할 수 있는 다양한 유형의 흐름에 대해 설명합니다.
조건이 충족되지 않는 경우 흐름에서 작업을 종료하는 Power Automate 종료 작업 컨트롤을 올바르게 사용하는 방법을 알아봅니다.
PowerApps 실행 기능에 대해 자세히 알아보고 자신의 앱에서 바로 웹사이트, 전화, 이메일 및 기타 앱과 같은 기타 서비스를 실행하십시오.
타사 애플리케이션 통합과 관련하여 Power Automate의 HTTP 요청이 작동하는 방식을 배우고 이해합니다.
Power Automate Desktop에서 Send Mouse Click을 사용하는 방법을 알아보고 이것이 어떤 이점을 제공하고 흐름 성능을 개선하는지 알아보십시오.
PowerApps 변수의 작동 방식, 다양한 종류, 각 변수가 앱에 기여할 수 있는 사항을 알아보세요.
이 자습서에서는 Power Automate를 사용하여 웹 또는 데스크톱에서 작업을 자동화하는 방법을 알려줍니다. 데스크톱 흐름 예약에 대한 포괄적인 가이드를 제공합니다.