네이티브 쿼리의 쿼리 폴딩

파워 쿼리에서 네이티브 쿼리를 정의하고 데이터 원본에 대해 실행할 수 있습니다. 네이티브 데이터베이스 쿼리를 사용하여 데이터베이스에서 데이터 가져오기 문서에서는 여러 데이터 원본으로 이 프로세스를 수행하는 방법을 설명합니다. 그러나 해당 문서에 설명된 프로세스를 사용하여 쿼리는 후속 쿼리 단계의 쿼리 접기를 활용하지 않습니다.

이 문서에서는 Value.NativeQuery 함수를 사용하여 데이터 원본에 대한 네이티브 쿼리를 만들고 쿼리의 후속 단계를 위해 쿼리 접기 메커니즘을 활성 상태로 유지하는 대체 방법을 보여 줍니다.

참고 항목

이 문서 전체에서 사용되는 개념을 더 잘 이해하려면 쿼리 폴딩에 대한 설명서와 쿼리 접기 표시기를 읽어보는 것이 좋습니다.

지원되는 데이터 커넥터

다음 섹션에서 설명하는 메서드는 다음 데이터 커넥터에 적용됩니다.

데이터 원본에서 대상에 연결

참고 항목

이 프로세스를 소개하기 위해 이 문서에서는 SQL Server 커넥터 및 AdventureWorks2019 샘플 데이터베이스를 사용합니다. 환경은 커넥터마다 다를 수 있지만 이 문서에서는 지원되는 커넥터에 대한 네이티브 쿼리에 대해 쿼리 접기 기능을 사용하도록 설정하는 방법에 대한 기본 사항을 보여 줍니다.

데이터 원본에 연결할 때는 네이티브 쿼리를 실행하려는 노드 또는 수준에 연결하는 것이 중요합니다. 이 문서의 예제에서 해당 노드는 서버 내의 데이터베이스 수준입니다.

SQL Server의 로컬 인스턴스에서 AdventureWorks2019 데이터베이스에 연결하기 위한 연결 설정 대화 상자의 스크린샷

연결 설정을 정의하고 연결에 대한 자격 증명을 제공하면 데이터 원본에 대한 탐색 대화 상자가 열립니다. 탐색 대화 상자에는 연결할 수 있는 모든 사용 가능한 개체가 포함됩니다.

이 목록에서 네이티브 쿼리가 실행되는 개체(대상이라고도 함)를 선택해야 합니다. 이 예제에서 해당 개체는 데이터베이스 수준입니다.

파워 쿼리의 탐색기 창에서 탐색기 창에서 데이터베이스 노드를 선택하고 길게(또는 마우스 오른쪽 단추로 클릭) 데이터 변환 옵션을 선택합니다. 이 옵션을 선택하면 네이티브 쿼리를 실행하는 데 필요한 대상인 데이터베이스의 전체 뷰에 대한 새 쿼리가 만들어집니다.

변환 데이터가 강조 표시된 탐색기에서 사용자가 데이터베이스 노드를 마우스 오른쪽 단추로 클릭한 데이터 선택 스크린샷

쿼리가 파워 쿼리 편집기로 이동되면 원본 단계만 적용된 단계 창에 표시됩니다. 이 단계에는 탐색기 창에 표시된 것과 유사하게 데이터베이스에 사용 가능한 모든 개체가 포함된 테이블이 포함되어 있습니다.

원본 단계만 있는 쿼리의 스크린샷.

Value.NativeQuery 함수 사용

이 프로세스의 목표는 다음 SQL 코드를 실행하고 파워 쿼리를 사용하여 원본으로 다시 접을 수 있는 더 많은 변환을 적용하는 것입니다.

SELECT DepartmentID, Name FROM HumanResources.Department WHERE GroupName = 'Research and Development'

첫 번째 단계는 올바른 대상을 정의하는 것이었습니다. 이 경우 SQL 코드가 실행되는 데이터베이스입니다. 단계에 올바른 대상이 있으면 해당 단계(이 경우 적용된 단계의 원본)를 선택한 다음 수식 입력줄에서 fx 단추를 선택하여 사용자 지정 단계를 추가할 수 있습니다. 이 예제에서는 수식을 다음 수식으로 바꿉 Source 다.

Value.NativeQuery(Source, "SELECT DepartmentID, Name FROM HumanResources.Department WHERE GroupName = 'Research and Development'  ", null, [EnableFolding = true])

이 수식의 가장 중요한 구성 요소는 EnableFolding 레코드 필드가 true로 설정된 함수의 네 번째 매개 변수에 선택적 레코드를 사용하는 것입니다.

Value.NativeQuery 함수 및 명시적 SQL 쿼리를 사용하는 새 사용자 지정 단계 수식의 스크린샷

참고 항목

Value.NativeQuery 함수 에 대한 자세한 내용은 공식 설명서 문서에서 확인할 수 있습니다.

수식을 입력하면 특정 단계에 대해 네이티브 쿼리를 실행할 수 있도록 설정해야 하는 경고가 표시됩니다. 이 단계를 평가하려면 계속을 선택합니다.

이 SQL 문은 행 3개와 열 2개만 있는 테이블을 생성합니다.

대상 데이터베이스에 대해 평가된 네이티브 쿼리의 결과가 있는 스크린샷.

쿼리 접기 테스트

쿼리의 쿼리 폴딩을 테스트하려면 필터를 열에 적용하고 적용된 단계 섹션의 쿼리 접기 표시기에서 단계가 접힌 것으로 표시되는지 확인할 수 있습니다. 이 경우 DepartmentID 열을 필터링하여 2와 같지 않은 값을 가질 수 있습니다.

2와 같지 않은 값만 갖도록 DepartmentID 열을 필터링하는 방법을 보여 주는 스크린샷

이 필터를 추가한 후에도 쿼리 접기 표시기가 이 새 단계에서 발생하는 쿼리 폴딩을 계속 표시하는지 확인할 수 있습니다.

적용된 단계 섹션의 데이터 원본에 다시 접힌 것으로 표시된 필터 단계입니다.

데이터 원본으로 전송되는 쿼리의 유효성을 추가로 검사하려면 필터링된 행 단계를 선택하거나 마우스 오른쪽 단추로 클릭하고 쿼리 계획 보기 옵션을 선택하여 해당 단계에 대한 쿼리 계획을 확인할 수 있습니다.

쿼리 계획 보기에서 뷰 세부 정보 하이퍼링크가 있는 Value.NativeQuery라는 이름의 노드를 볼 수 있습니다. 이 하이퍼링크를 선택하여 SQL Server 데이터베이스로 전송되는 정확한 쿼리를 볼 수 있습니다.

네이티브 쿼리는 원래의 하위 쿼리를 만들기 위해 다른 SELECT 문 주위에 래핑됩니다. 파워 쿼리는 사용된 변환과 제공된 네이티브 쿼리를 고려하여 최적의 쿼리를 만들기 위해 최선을 다합니다.

필터링된 행 단계에 대한 쿼리 계획의 스크린샷.

쿼리 폴딩이 불가능하여 오류가 발생하는 시나리오의 경우 원래 네이티브 쿼리의 하위 쿼리로 단계의 유효성을 검사하여 구문 또는 컨텍스트 충돌이 있는지 확인하는 것이 좋습니다.