다음을 통해 공유


Power BI Desktop의 쿼리 폴딩 지침

이 문서는 Power BI Desktop에서 모델을 개발하는 데이터 모델러를 대상으로 작성되었습니다. 파워 쿼리의 쿼리 폴딩을 수행할 수 있는 시기와 방법의 모범 사례 지침을 제공합니다.

‘쿼리 폴딩’은 파워 쿼리의 쿼리에서 원본 데이터를 검색 및 변환하는 단일 쿼리 문을 생성하는 기능입니다. 자세한 내용은 파워 쿼리의 쿼리 폴딩을 참조하세요.

지침

쿼리 폴딩 지침은 모델 모드에 따라 다릅니다.

DirectQuery 또는 이중 스토리지 모드 테이블의 경우 파워 쿼리의 쿼리에서 쿼리 폴딩을 수행해야 합니다.

가져오기 테이블의 경우 쿼리 폴딩을 수행할 수 있습니다. 쿼리가 관계형 원본을 기반으로 하고 단일 SELECT 문을 생성할 수 있는 경우 쿼리 폴딩이 수행되도록 하여 ‘데이터 새로 고침 성능을 극대화’합니다. 변환을 처리하는 데 파워 쿼리 매시업 엔진이 여전히 필요한 경우, 특히 대규모 의미 체계 모델의 경우 수행해야 하는 작업을 최소화하기 위해 노력해야 합니다.

다음 글머리 기호 목록에서는 특정 지침을 제공합니다.

  • 최대한 많은 처리를 데이터 원본에 위임: 파워 쿼리의 쿼리에서 모든 단계의 폴딩이 불가능한 경우 쿼리 폴딩을 차단하는 단계를 검색합니다. 가능한 경우 시퀀스의 후속 단계를 앞으로 이동하여 쿼리 폴딩에 고려될 수 있도록 합니다. 파워 쿼리 매시업 엔진은 원본 쿼리를 생성할 때 쿼리 단계의 순서를 조정할 수 있을 만큼 스마트할 수 있습니다.

    관계형 데이터 원본의 경우, 단일 SELECT 문이나 저장 프로시저의 절차적 논리 내에서 쿼리 폴딩을 차단하는 단계를 수행할 수 있으면 다음에 설명된 대로 기본 SQL 쿼리를 사용하는 것이 좋습니다.

  • 기본 SQL 쿼리 사용: 파워 쿼리의 쿼리가 관계형 원본에서 데이터를 검색하는 경우 일부 원본에서 기본 SQL 쿼리를 사용할 수 있습니다. 쿼리는 실제로 저장 프로시저 실행을 포함하여 유효한 모든 문일 수 있습니다. 문이 여러 개의 결과 집합을 생성하는 경우 첫 번째 결과 집합만 반환됩니다. 문에서 매개 변수를 선언할 수 있으며, Value.NativeQuery M 함수를 사용하는 것이 좋습니다. 이 함수는 매개 변수 값을 안전하고 편리하게 전달하도록 작성되었습니다. 파워 쿼리 매시업 엔진은 후속 쿼리 단계를 폴딩할 수 없으므로 기본 쿼리 문에 모든(또는 최대한 많은) 변환 논리를 포함해야 합니다.

    기본 SQL 쿼리를 사용하는 경우 다음 두 가지 중요한 사항을 고려해야 합니다.

    • DirectQuery 모델 테이블의 경우 쿼리가 SELECT 문이어야 하며, CTE(공용 테이블 식) 또는 저장 프로시저를 사용할 수 없습니다.
    • 증분 새로 고침은 기본 SQL 쿼리를 사용할 수 없습니다. 따라서 파워 쿼리 매시업 엔진이 모든 원본 행을 검색한 다음, 필터를 적용하여 증분 변경 내용을 확인해야 합니다.

    Important

    기본 SQL 쿼리는 데이터 검색 이상의 작업을 수행할 수 있습니다. 데이터를 수정하거나 삭제하는 문을 포함하여 유효한 모든 문을 실행할 수 있으며, 여러 번 실행하는 것도 가능합니다. 최소 권한의 원칙을 적용하여 데이터베이스 액세스에 사용하는 계정에 필수 데이터에 대한 읽기 권한만 부여되도록 하는 것이 중요합니다.

  • 원본에서 데이터 준비 및 변환: 파워 쿼리의 특정 쿼리 단계를 폴딩할 수 없는 것이 확인되면 데이터 원본에서 변환을 적용할 수 있습니다. 이 변환은 원본 데이터를 논리적으로 변환하는 데이터베이스 뷰를 작성하여 수행할 수 있습니다. 또는 Power BI에서 쿼리하기 전에 데이터를 물리적으로 준비하고 구체화하면 됩니다. 관계형 데이터 웨어하우스는 일반적으로 사전 통합된 조직 데이터 원본으로 이루어진 준비된 데이터의 좋은 예입니다.

이 문서에 대한 자세한 내용은 다음 리소스를 참조하세요.