다음을 통해 공유


파워 쿼리의 쿼리 평가 및 쿼리 폴딩 개요

이 문서에서는 M 쿼리를 처리하고 데이터 원본 요청으로 변환하는 방법에 대한 기본 개요를 제공합니다.

파워 쿼리 M 스크립트

파워 쿼리에서 만들거나, 고급 편집기에서 수동으로 작성하거나, 빈 문서를 사용하여 입력한 쿼리는 파워 쿼리 M 수식 언어의 함수 및 구문으로 구성됩니다. 이 쿼리는 파워 쿼리 엔진에 의해 해석되고 평가되어 결과를 출력합니다. M 스크립트는 쿼리를 평가하는 데 필요한 명령 집합 역할을 합니다.

M 스크립트는 데이터를 준비하는 방법을 설명하는 레시피로 생각할 수 있습니다.

M 스크립트를 만드는 가장 일반적인 방법은 파워 쿼리 편집기를 사용하는 것입니다. 예를 들어 SQL Server 데이터베이스와 같은 데이터 원본에 연결할 때 화면 오른쪽에 적용된 단계라는 섹션이 있음을 알 수 있습니다. 이 섹션에서는 쿼리에 사용되는 모든 단계 또는 변환을 표시합니다. 이러한 의미에서 파워 쿼리 편집기는 사용자가 수행한 변환에 적합한 M 스크립트를 만들고 사용하는 코드가 유효한지 확인하는 데 도움이 되는 인터페이스 역할을 합니다.

참고 항목

M 스크립트는 파워 쿼리 편집기에서 다음을 위해 사용됩니다.

  • 쿼리를 일련의 단계로 표시하고 새 단계를 만들거나 수정할 수 있습니다.
  • 다이어그램 보기를 표시합니다.

적용된 단계 및 데이터 미리 보기 보기의 스크린샷.

이전 이미지는 다음 단계를 포함하는 적용된 단계 섹션을 강조합니다.

  • 원본: 데이터 원본에 연결합니다. 이 경우 SQL Server 데이터베이스에 대한 연결입니다.
  • 탐색: 데이터베이스의 특정 테이블로 이동합니다.
  • 다른 열 제거: 테이블에서 유지할 열을 선택합니다.
  • 정렬된 행: 하나 이상의 열을 사용하여 테이블을 정렬합니다.
  • 상위 행 유지: 테이블의 맨 위에서 일부 행만 유지하도록 테이블을 필터링합니다.

이 단계 이름 집합은 파워 쿼리에서 만든 M 스크립트를 볼 수 있는 친숙한 방법입니다. 전체 M 스크립트를 보는 방법에는 여러 가지가 있습니다. 파워 쿼리의 보기 탭에서 고급 편집기 선택할 수 있습니다. 홈 탭의 쿼리 그룹에서 고급 편집기 선택할 수도 있습니다. 일부 버전의 파워 쿼리에서는 보기 탭으로 이동하여 쿼리 스크립트를 표시하도록 수식 입력줄의 보기를 변경하고 레이아웃 그룹에서 스크립트 보기>쿼리 스크립트를 선택할 수도 있습니다.

전체 M 스크립트 및 적용된 단계의 해당 이름을 포함하는 스크린샷.

적용된 단계 창에 있는 대부분의 이름도 M 스크립트에서와 같이 사용되고 있습니다. 쿼리의 단계는 M 언어의 식별자라는 항목을 사용하여 이름이 지정됩니다. 경우에 따라 M의 단계 이름을 중심으로 추가 문자가 래핑되지만 적용된 단계에서는 이러한 문자가 표시되지 않습니다. 예를 들어 #"Kept top rows"이러한 추가 문자로 인해 따옴표 붙은 식별자로 분류됩니다. 따옴표 붙은 식별자를 사용하여 키워드, 공백, 주석, 연산자 및 문장 부호를 포함하여 0개 이상의 유니코드 문자 시퀀스를 식별자로 사용할 수 있습니다. M 언어의 식별자에 대해 자세히 알아보려면 어휘 구조이동합니다.

파워 쿼리 편집기를 통해 쿼리를 변경하면 쿼리에 대한 M 스크립트가 자동으로 업데이트됩니다. 예를 들어 이전 이미지를 시작점으로 사용하여 유지된 상위 행 단계 이름을 상위 20개으로 변경하면 스크립트 보기에서 이 변경 내용이 자동으로 업데이트됩니다.

적용된 단계 이름이 M 스크립트를 업데이트하는 상위 20개 행으로 변경된 스크린샷.

파워 쿼리 편집기를 사용하여 M 스크립트의 전부 또는 대부분을 만드는 것이 좋지만 M 스크립트의 일부를 수동으로 추가하거나 수정할 수 있습니다. M 언어에 대해 자세히 알아보려면 M 언어의 공식 문서 사이트로 이동하세요.

참고 항목

M 코드라고도 하는 M 스크립트는 파워 쿼리 M 언어를 사용하는 모든 코드에 사용되는 용어입니다. 이 문서의 컨텍스트에서 M 스크립트는 파워 쿼리 쿼리 내에서 찾은 코드를 참조하고 고급 편집기 창 또는 수식 입력줄의 스크립트 보기를 통해 액세스할 수 있습니다.

파워 쿼리의 쿼리 평가

다음 다이어그램에서는 파워 쿼리에서 쿼리를 평가할 때 발생하는 프로세스를 살펴봅니다.

M 스크립트에서 최종 출력까지의 쿼리 평가 경로를 보여 주는 다이어그램

  1. 고급 편집기 내에 있는 M 스크립트가 파워 쿼리 엔진에 제출됩니다. 자격 증명 및 데이터 원본 개인 정보 수준과 같은 기타 중요한 정보도 포함됩니다.
  2. 파워 쿼리는 데이터 원본에서 추출해야 하는 데이터를 결정하고 데이터 원본에 요청을 제출합니다.
  3. 데이터 원본은 요청된 데이터를 파워 쿼리로 전송하여 파워 쿼리의 요청에 응답합니다.
  4. 파워 쿼리는 데이터 원본에서 들어오는 데이터를 수신하고 필요한 경우 파워 쿼리 엔진을 사용하여 변환을 수행합니다.
  5. 이전 지점에서 파생된 결과가 대상에 로드됩니다.

참고 항목

이 예제에서는 SQL Database를 데이터 원본으로 사용하는 쿼리를 보여 주지만 이 개념은 데이터 원본이 있거나 없는 쿼리에 적용됩니다.

파워 쿼리는 M 스크립트를 읽을 때 최적화 프로세스를 통해 스크립트를 실행하여 쿼리를 보다 효율적으로 평가합니다. 이 프로세스에서는 쿼리에서 데이터 원본으로 오프로드할 수 있는 단계(변환)를 결정합니다. 파워 쿼리 엔진을 사용하여 평가해야 하는 다른 단계도 결정합니다. 이 최적화 프로세스를 쿼리 폴딩이라고 합니다. 여기서 파워 쿼리는 쿼리 실행을 최적화하기 위해 가능한 한 많은 실행을 데이터 원본에 푸시하려고 합니다.

Important

파워 쿼리 M 수식 언어(M 언어라고도 함)의 모든 규칙이 따릅니다. 특히 지연 평가 는 최적화 프로세스 중에 중요한 역할을 합니다. 이 프로세스에서 파워 쿼리는 쿼리에서 평가해야 하는 특정 변환을 이해합니다. 파워 쿼리는 쿼리 출력에 필요하지 않기 때문에 평가할 필요가 없는 다른 변환도 이해합니다.

또한 여러 원본이 관련된 경우 쿼리를 평가할 때 각 데이터 원본의 데이터 개인 정보 수준을 고려합니다. 추가 정보: 데이터 개인 정보 보호 방화벽의 백그라운드

다음 다이어그램에서는 이 최적화 프로세스에서 수행되는 단계를 보여 줍니다.

쿼리 평가 중 최적화 프로세스를 보여 주는 다이어그램

  1. 고급 편집기 내에 있는 M 스크립트가 파워 쿼리 엔진에 제출됩니다. 자격 증명 및 데이터 원본 개인 정보 수준과 같은 기타 중요한 정보도 제공됩니다.
  2. 쿼리 폴딩 메커니즘은 데이터 원본에 메타데이터 요청을 제출하여 데이터 원본, 테이블 스키마, 데이터 원본의 서로 다른 테이블 간의 관계 등을 결정합니다.
  3. 수신된 메타데이터에 따라 쿼리 폴딩 메커니즘은 데이터 원본에서 추출할 정보와 파워 쿼리 엔진 내에서 수행해야 하는 변환 집합을 결정합니다. 필요한 경우 데이터 원본에서 데이터를 검색하고 파워 쿼리 엔진에서 들어오는 데이터를 변환하는 작업을 수행하는 다른 두 구성 요소에 지침을 보냅니다.
  4. 파워 쿼리의 내부 구성 요소가 지침을 받으면 파워 쿼리는 데이터 원본 쿼리를 사용하여 데이터 원본에 요청을 보냅니다.
  5. 데이터 원본은 파워 쿼리에서 요청을 수신하고 파워 쿼리 엔진으로 데이터를 전송합니다.
  6. 데이터가 파워 쿼리 내에 있으면 파워 쿼리 내의 변환 엔진(매시업 엔진이라고도 함)은 데이터 원본으로 다시 접거나 오프로드할 수 없는 변환을 수행합니다.
  7. 이전 지점에서 파생된 결과가 대상에 로드됩니다.

참고 항목

M 스크립트에 사용되는 변환 및 데이터 원본에 따라 파워 쿼리는 들어오는 데이터를 스트리밍하거나 버퍼링하는지 여부를 결정합니다.

쿼리 접기 개요

쿼리 폴딩의 목표는 쿼리의 변환을 계산할 수 있는 데이터 원본에 쿼리 평가의 많은 부분을 오프로드하거나 푸시하는 것입니다.

쿼리 폴딩 메커니즘은 M 스크립트를 데이터 원본에서 해석하고 실행할 수 있는 언어로 변환하여 이 목표를 달성합니다. 그런 다음, 평가를 데이터 원본에 푸시하고 해당 평가 결과를 파워 쿼리로 보냅니다.

이 작업은 데이터 원본에서 필요한 모든 데이터를 추출하고 파워 쿼리 엔진에 필요한 모든 변환을 실행하는 것보다 더 빠른 쿼리 실행을 제공하는 경우가 많습니다.

데이터 가져오기 환경을 사용하는 경우 파워 쿼리는 궁극적으로 데이터 원본에 연결할 수 있는 프로세스를 안내합니다. 이렇게 할 때 파워 쿼리는 데이터 함수에 액세스하는 것으로 분류된 M 언어의 일련의 함수를 사용합니다. 이러한 특정 함수는 메커니즘 및 프로토콜을 사용하여 데이터 원본이 이해할 수 있는 언어를 사용하여 데이터 원본에 연결합니다.

그러나 쿼리에서 수행하는 단계는 쿼리 접기 메커니즘이 최적화하려고 시도하는 단계 또는 변환입니다. 그런 다음 파워 쿼리 엔진을 사용하여 처리되는 대신 데이터 원본으로 오프로드할 수 있는지 확인합니다.

Important

일반적으로 쿼리의 원본 단계로 표시되는 모든 데이터 원본 함수는 데이터 원본의 데이터를 모국어로 쿼리합니다. 쿼리 폴딩 메커니즘은 데이터 원본 함수 이후 쿼리에 적용된 모든 변환에서 사용되므로 단일 데이터 원본 쿼리 또는 데이터 원본에 오프로드할 수 있는 많은 변환으로 변환 및 결합할 수 있습니다.

쿼리의 구조에 따라 쿼리 폴딩 메커니즘에 세 가지 가능한 결과가 있을 수 있습니다.

  • 전체 쿼리 폴딩: 모든 쿼리 변환이 데이터 원본으로 다시 푸시되고 파워 쿼리 엔진에서 최소한의 처리가 수행되는 경우
  • 부분 쿼리 접기: 쿼리에서 일부 변환만 있고 전부는 아닌 경우 데이터 원본으로 다시 푸시할 수 있습니다. 이 경우 변환의 하위 집합만 데이터 원본에서 수행되고 나머지 쿼리 변환은 파워 쿼리 엔진에서 수행됩니다.
  • 쿼리 접기 없음: 변환이 지원되지 않거나 커넥터가 쿼리 폴딩을 지원하지 않기 때문에 쿼리에 데이터 원본의 네이티브 쿼리 언어로 변환할 수 없는 변환이 포함된 경우 이 경우 파워 쿼리는 데이터 원본에서 원시 데이터를 가져오고 파워 쿼리 엔진을 사용하여 파워 쿼리 엔진 수준에서 필요한 변환을 처리하여 원하는 출력을 달성합니다.

참고 항목

쿼리 폴딩 메커니즘은 Microsoft SQL Server 및 OData 피드같은 구조적 데이터 원본에 대한 커넥터에서 주로 사용할 수 있습니다. 최적화 단계 중에 엔진이 쿼리의 단계를 다시 정렬할 수 있습니다.

처리 리소스가 더 많고 쿼리 폴딩 기능이 있는 데이터 원본을 활용하면 파워 쿼리 엔진이 아닌 데이터 원본에서 처리가 수행될 때 쿼리 로드 시간이 단축될 수 있습니다.

쿼리 폴딩 메커니즘의 세 가지 가능한 결과에 대한 자세한 예제는 쿼리 폴딩 예제로 이동하세요.

적용된 단계 창에 있는 쿼리 접기 표시기에 대한 자세한 내용은 쿼리 폴딩 표시기를 참조하세요.