파워 쿼리 M 쿼리를 평가하여 결과에 필요한 데이터 및 변환을 확인합니다. 평가 중에 쿼리 폴딩은 지원되는 변환을 데이터 원본이 수행할 수 있는 작업으로 변환하려고 시도합니다. 접을 수 없는 변환은 파워 쿼리 엔진에서 실행됩니다.
파워 쿼리 M 스크립트란?
M 코드라고도 하는 M 스크립트는 쿼리 결과를 생성하기 위해 파워 쿼리 계산되는 파워 쿼리 M 수식 언어 함수 및 구문 집합입니다. 모든 쿼리에는 M 스크립트가 있으며, 파워 쿼리 만들든, 고급 편집기에서 작성하든, 빈 쿼리에 입력합니다.
팁 (조언)
M 스크립트는 데이터를 준비하는 방법을 설명하는 레시피로 생각할 수 있습니다.
M 스크립트를 만드는 가장 일반적인 방법은 파워 쿼리 편집기를 사용하는 것입니다. 예를 들어 SQL Server 데이터베이스와 같은 데이터 원본에 연결할 때 화면 오른쪽에 적용된 단계라는 섹션이 있음을 알 수 있습니다. 이 섹션에서는 쿼리에 사용되는 모든 단계 또는 변환을 보여 줍니다. 이러한 의미에서 파워 쿼리 편집기는 원하는 변환에 적합한 M 스크립트를 만들고 사용하는 코드가 유효한지 확인하는 데 도움이 되는 인터페이스 역할을 합니다.
비고
M 스크립트는 파워 쿼리 편집기에서 다음을 위해 사용됩니다.
- 쿼리를 일련의 단계로 표시하고 단계를 만들거나 수정할 수 있습니다.
- 다이어그램 보기를 표시합니다.
이 SQL Server 예제에서 적용된 단계 창에는 다음 단계가 포함되어 있습니다.
- 원본: 데이터 원본에 연결합니다. 이 경우 SQL Server 데이터베이스에 대한 연결입니다.
- 탐색: 데이터베이스의 특정 테이블로 이동합니다.
- 다른 열 제거: 테이블에서 유지할 열을 선택합니다.
- 정렬된 행: 하나 이상의 열을 사용하여 테이블을 정렬합니다.
- 상위 행 유지: 테이블의 맨 위에서 일부 행만 유지하도록 테이블을 필터링합니다.
파워 쿼리 M 스크립트 보기 및 편집
이 단계 이름 집합은 파워 쿼리 만든 M 스크립트를 볼 수 있는 친숙한 방법입니다. 여러 가지 방법으로 전체 M 스크립트를 볼 수 있습니다. 파워 쿼리 보기 탭에서 고급 편집기 선택합니다. 홈 탭의 쿼리 그룹에서 고급 편집기 선택할 수도 있습니다. 일부 버전의 파워 쿼리 보기 탭으로 이동하여 쿼리 스크립트를 표시하도록 수식 입력줄의 보기를 변경하고 레이아웃 그룹에서 스크립트 보기>쿼리 스크립트를 선택할 수도 있습니다.
적용된 단계 창에서 찾은 대부분의 이름은 M 스크립트와 마찬가지로 사용됩니다. M 언어의 식별자를 사용하여 쿼리 단계의 이름을 지정합니다. 경우에 따라 M에서 추가 문자가 단계 이름을 둘러싸지만 이러한 문자는 적용된 단계에 표시되지 않습니다. 예를 들어 #"Kept top rows"이러한 추가 문자로 인해 따옴표 붙은 식별자로 분류됩니다 . 따옴표 붙은 식별자를 사용하면 키워드, 공백, 주석, 연산자 및 문장 부호를 포함하여 0개 이상의 유니코드 문자 시퀀스를 식별자로 사용할 수 있습니다. M 언어의 식별자에 대한 자세한 내용은 어휘 구조를 참조하세요.
파워 쿼리 편집기를 통해 쿼리를 변경하면 쿼리에 대한 M 스크립트가 자동으로 업데이트됩니다. 예를 들어 유지된 상위 행 단계 이름을 상위 20개 행으로 변경하면 쿼리 스크립트 보기에서도 이름이 변경됩니다.
파워 쿼리 편집기를 사용하여 M 스크립트의 전부 또는 대부분을 만드는 것이 좋지만 M 스크립트의 일부를 수동으로 추가하거나 수정할 수 있습니다. 자세한 내용은 M 언어 참조를 참조하세요.
이 문서에서 M 스크립트는 수식 입력줄의 고급 편집기 또는 쿼리 스크립트 보기를 통해 액세스할 수 있는 쿼리의 파워 쿼리 M 코드를 참조합니다.
파워 쿼리 M 쿼리를 평가하는 방법
파워 쿼리 필요한 출력 및 생성 방법을 결정하여 M 스크립트를 평가합니다. 외부 데이터 원본을 사용하는 쿼리의 경우 평가에는 원본에서 데이터를 요청하고, 파워 쿼리 엔진에서 실행되는 변환을 처리하고, 결과를 대상으로 로드하는 작업이 포함됩니다.
다음 다이어그램에서는 파워 쿼리 쿼리를 평가할 때 발생하는 프로세스를 살펴봅니다.
- 고급 편집기 내에 있는 M 스크립트가 파워 쿼리 엔진에 제출됩니다. 자격 증명 및 데이터 원본 개인 정보 수준과 같은 기타 중요한 정보도 포함됩니다.
- 파워 쿼리 데이터 원본에서 추출해야 하는 데이터를 결정하고 데이터 원본에 요청을 제출합니다.
- 데이터 원본은 요청된 데이터를 파워 쿼리 전송하여 파워 쿼리 요청에 응답합니다.
- 파워 쿼리 데이터 원본에서 들어오는 데이터를 수신하고 필요한 경우 파워 쿼리 엔진을 사용하여 변환을 수행합니다.
- 파워 쿼리 변환된 결과를 대상으로 로드합니다.
비고
이 흐름은 SQL Server 데이터베이스에서 읽는 쿼리를 보여줍니다. 외부 데이터 원본이 없는 쿼리의 경우 파워 쿼리 M 스크립트를 평가하고 결과를 생성하지만 데이터 원본 요청 및 전송 단계는 적용되지 않습니다.
쿼리 폴딩이 쿼리 평가를 최적화하는 방법
파워 쿼리 M 스크립트를 읽을 때 최적화 프로세스를 통해 스크립트를 실행하여 쿼리를 보다 효율적으로 평가합니다. 이 프로세스에서는 쿼리에서 데이터 원본으로 오프로드할 수 있는 단계(변환)를 결정합니다. 또한 파워 쿼리 엔진을 사용하여 평가해야 하는 다른 단계도 결정합니다.
이 최적화 프로세스를 쿼리 폴딩이라고 합니다. 쿼리 폴딩은 지원되는 M 변환을 데이터 원본이 수행할 수 있는 작업으로 변환합니다. 파워 쿼리 데이터 원본에서 가능한 한 많은 쿼리를 실행하려고 시도하고 파워 쿼리 엔진의 나머지 변환을 평가합니다.
중요합니다
파워 쿼리 M 수식 언어(M 언어라고도 함) 모든 규칙이 따릅니다. 특히 지연 평가 는 최적화 프로세스 중에 중요한 역할을 합니다. 이 프로세스에서 파워 쿼리 쿼리에서 평가해야 하는 특정 변환을 이해합니다. 또한 파워 쿼리 쿼리 출력에 필요하지 않으므로 다른 변환을 평가할 필요가 없는 항목도 이해합니다.
또한 여러 원본이 관련된 경우 쿼리를 평가할 때 각 데이터 원본의 데이터 개인 정보 수준을 고려합니다. 추가 정보: 데이터 개인 정보 보호 방화벽의 백그라운드
다음 다이어그램에서는 이 최적화 프로세스에서 수행되는 단계를 보여 줍니다.
- 고급 편집기 내에 있는 M 스크립트가 파워 쿼리 엔진에 제출됩니다. 자격 증명 및 데이터 원본 개인 정보 수준과 같은 기타 중요한 정보도 제공됩니다.
- 쿼리 폴딩 메커니즘은 메타데이터 요청을 제출하여 데이터 원본, 테이블 스키마, 데이터 원본의 테이블 간 관계 및 기타 메타데이터의 기능을 확인합니다.
- 수신하는 메타데이터에 따라 쿼리 폴딩 메커니즘은 데이터 원본에서 추출할 정보와 파워 쿼리 엔진 내에서 발생해야 하는 변환을 결정합니다. 필요한 경우 데이터 원본에서 데이터를 검색하고 파워 쿼리 엔진에서 들어오는 데이터를 변환하는 다른 두 구성 요소에 지침을 보냅니다.
- 파워 쿼리 내부 구성 요소가 지침을 받은 후 파워 쿼리 데이터 원본 쿼리를 사용하여 데이터 원본에 요청을 보냅니다.
- 데이터 원본은 파워 쿼리 요청을 수신하고 데이터를 파워 쿼리 엔진으로 전송합니다.
- 데이터가 파워 쿼리 내에 있으면 파워 쿼리 내의 변환 엔진(매시업 엔진이라고도 함)은 다시 접거나 데이터 원본으로 오프로드할 수 없는 변환을 수행합니다.
- 파워 쿼리 변환된 결과를 대상으로 로드합니다.
비고
M 스크립트에서 사용되는 변환 및 데이터 원본에 따라 파워 쿼리 들어오는 데이터를 스트리밍할지 또는 버퍼링할지 결정합니다.
파워 쿼리 쿼리 폴딩이 수행하는 기능
쿼리 폴딩의 목표는 쿼리의 변환을 계산할 수 있는 데이터 원본에 쿼리 평가의 많은 부분을 오프로드하거나 푸시하는 것입니다.
쿼리 폴딩 메커니즘은 M 스크립트를 데이터 원본이 해석하고 실행할 수 있는 언어로 변환하여 이 목표를 달성합니다. 그런 다음, 평가를 데이터 원본에 푸시하고 해당 평가 결과를 파워 쿼리 보냅니다.
이 작업은 종종 데이터 원본에서 필요한 모든 데이터를 추출하고 파워 쿼리 엔진에 필요한 모든 변환을 실행하는 것보다 더 빠른 쿼리 실행을 제공합니다.
데이터 환경을 사용할 때, 파워 쿼리는 데이터 원본에 연결할 수 있도록 프로세스를 단계별로 안내합니다. 이렇게 할 때 파워 쿼리는 M 언어의 데이터 접근 함수로 분류된 일련의 함수를 사용합니다. 이러한 특정 함수는 메커니즘 및 프로토콜을 사용하여 데이터 원본이 이해할 수 있는 언어를 사용하여 데이터 원본에 연결합니다.
데이터 원본 함수 이후의 변환의 경우 쿼리 폴딩 메커니즘은 파워 쿼리 엔진에서 처리하는 대신 데이터 원본에 오프로드할 수 있는지 여부를 확인합니다.
중요합니다
일반적으로 쿼리의 원본 단계로 표시되는 데이터 원본 함수는 데이터 원본의 데이터를 모국어로 쿼리합니다. 데이터 원본 함수 이후의 변환의 경우 파워 쿼리 커넥터 및 변환에서 지원하는 경우에만 쿼리 폴딩을 시도합니다. 메커니즘은 지원되는 변환을 단일 데이터 원본 쿼리로 변환하고 결합할 수 있습니다.
파워 쿼리의 쿼리 폴딩 결과
쿼리의 구조에 따라 쿼리 폴딩 메커니즘에 세 가지 가능한 결과가 있을 수 있습니다.
| 쿼리 폴딩 결과 | 데이터 원본에서 처리 | 파워 쿼리 엔진에서 처리 |
|---|---|---|
| 전체 쿼리 폴딩 | 데이터 원본은 모든 쿼리 변환을 처리합니다. | 파워 쿼리 엔진에서 최소 처리가 수행됩니다. |
| 부분 쿼리 폴딩 | 데이터 원본은 파워 쿼리 네이티브 쿼리 언어로 변환할 수 있는 변환을 처리합니다. | 파워 쿼리 엔진은 나머지 변환을 처리합니다. |
| 쿼리 폴딩 없음 | 데이터 원본은 쿼리 변환을 처리하지 않고 요청된 원본 데이터를 반환합니다. | 파워 쿼리 엔진은 필요한 모든 변환을 처리합니다. |
쿼리 폴딩을 지원하는 데이터 원본
쿼리 접기 지원은 커넥터, 데이터 원본 및 쿼리의 변환에 따라 달라집니다. SQL Server 및 OData 피드와 같은 쿼리 처리 기능이 있는 구조적 데이터 원본용 커넥터는 일반적으로 쿼리 폴딩을 지원합니다. CSV 및 Excel 파일과 같은 쿼리 엔진이 없는 원본은 쿼리 폴딩을 지원하지 않습니다.
최적화하는 동안 파워 쿼리 엔진은 쿼리 단계를 다시 정렬할 수 있습니다. 더 많은 처리 리소스와 쿼리 폴딩 기능이 있는 데이터 원본을 사용하면 파워 쿼리 엔진 대신 데이터 원본에서 처리가 수행되므로 쿼리 로드 시간을 줄일 수 있습니다.
파워 쿼리 Online에서 쿼리 폴딩 확인
파워 쿼리 Online에서 적용된 단계 옆의 쿼리 폴딩 표시기를 사용하여 쿼리 폴딩이 적용되는 단계를 식별합니다. 쿼리 계획을 사용하여 데이터 원본에서 실행되는 작업과 파워 쿼리 엔진에서 실행되는 작업을 확인할 수도 있습니다. 이러한 기능은 파워 쿼리 Online에서만 사용할 수 있습니다.
사용 가능한 경우 원시 쿼리 보기 또는 데이터 원본 쿼리 보기를 사용하여 파워 쿼리 데이터 원본에 보내는 요청을 검사합니다. 가용성은 커넥터에 따라 달라집니다.