쿼리 접기 표시기
참고 항목
이 문서를 읽기 전에 파워 쿼리에서 폴딩이 작동하는 방식을 더 잘 이해하려면 파워 쿼리에서 쿼리 평가 및 쿼리 폴딩 개요를 읽어보는 것이 좋습니다.
쿼리 접기 표시기를 사용하면 접거나 접지 않는 단계를 이해할 수 있습니다.
쿼리 접기 표시기를 사용하면 접기를 중단하는 변경을 수행할 때 분명해집니다. 이 기능을 사용하면 문제를 보다 쉽게 빠르게 해결하고, 처음에 성능 문제를 방지하고, 쿼리에 대한 인사이트를 높일 수 있습니다. 대부분의 경우 단계가 접거나 접지 않습니다. 그러나 결과가 명확하지 않은 경우가 많으며 이러한 사례는 단계 진단 표시기(동적, 불투명 및 알 수 없음)에서 설명합니다.
참고 항목
쿼리 접기 표시기 기능은 파워 쿼리 Online에서만 사용할 수 있습니다.
쿼리 폴딩 진단 해석
단계 옆에 있는 쿼리 접기 표시기를 검사할 때 가장 중요한 것은 진단 상태가 순차적이지 않다는 것입니다. 즉, 해당 단계의 표시기에서는 쿼리 전체를 해당 지점까지 접는지 여부를 설명합니다. 쿼리가 접지 않고 접는 것을 보여 주는 표시기가 있는 경우 해당 지점까지의 쿼리가 접힌다는 의미입니다.
이 해석은 SQL 원본에 대한 간단한 쿼리에서도 작동합니다. 예를 들어 AdventureWorks 샘플 데이터베이스를 사용하여 Production.Product 테이블에 연결하고 데이터를 로드합니다. 파워 쿼리 탐색기를 통해 이 샘플을 로드하면 다음 쿼리가 제공됩니다.
let
Source = Sql.Database("ServerName", "AdventureWorks"),
Navigation = Source{[Schema = "Production", Item = "Product"]}[Data]
in
Navigation
쿼리 접기 표시기에서 이 코드가 어떻게 표시되는지 살펴보면 첫 번째 단계는 결정적이지 않습니다. 그러나 두 번째 단계는 접습니다. 즉, 해당 지점까지의 쿼리는 접습니다.
이 예제에서는 초기 단계가 접히도록 확인할 수 없지만(결정적이지 않음) 데이터를 처음 로드할 때 생성되는 마지막 단계는 접습니다. 첫 번째 단계(원본 및 경우에 따라 다른 탐색 단계)가 처리되는 방법은 커넥터에 따라 달라집니다. 예를 들어 SQL을 사용하면 접지 않는 카탈로그 테이블 값으로 처리됩니다. 그러나 해당 커넥터에 대한 데이터를 선택하는 즉시 접습니다.
반대로, 이 표시는 쿼리가 지점까지 접힌 다음 접기를 중지한다는 것을 의미할 수도 있습니다. 모든 것이 접힌 것을 보여주는 단계에 대한 접이식 표시기가 있는 경우와 달리 접지 않음 표시기가 있는 경우 모든 것이 접지 않는다는 것을 의미하지는 않습니다. 대신, 그것은 "모든 것"이 접힌다는 것을 의미합니다. 일반적으로 마지막 접기 표시기까지 모든 것이 접히며 그 후에 더 많은 작업이 발생합니다.
이전 예제를 수정하면 접지 않는 변환(각 Word 대문자 표시)을 제공할 수 있습니다.
let
Source = Sql.Database("ServerName", "AdventureWorks"),
Navigation = Source{[Schema = "Production", Item = "Product"]}[Data],
#"Capitalized each word" = Table.TransformColumns(Navigation, {{"Name", each Text.Proper(_), type text}})
in
#"Capitalized each word"
쿼리 접기 표시기에서는 마지막 단계가 접지 않는다는 점을 제외하고 이전과 동일한 표시기가 있습니다. 이 마지막 단계까지의 모든 작업은 데이터 원본에서 수행되고 최종 단계는 로컬로 수행됩니다.
단계 진단 표시기
쿼리 접기 표시기에서는 기본 쿼리 계획을 사용하며 쿼리에 대한 정보를 가져와서 보고할 수 있어야 합니다. 현재 쿼리 계획은 테이블만 지원하므로 일부 경우(목록, 레코드, 기본 형식)는 접기 여부로 보고되지 않습니다. 마찬가지로 상수 테이블은 불투명한 것으로 보고됩니다.
표시기 | 아이콘 | 설명 |
---|---|---|
접는 | 접기 표시기는 이 단계까지의 쿼리가 데이터 원본에 의해 평가됨을 나타냅니다. | |
접지 않음 | 접지 않음 표시기는 이 단계까지의 쿼리의 일부가 데이터 원본 외부에서 평가됨을 나타냅니다. 마지막 접기 표시기(있는 경우)와 비교하여 쿼리를 더 성능이 향상되도록 다시 정렬할 수 있는지 확인할 수 있습니다. | |
접을 수 있습니다. | 접기 표시기가 일반적이지 않을 수 있습니다. 즉, 쿼리가 접을 수 있습니다. 이는 쿼리에서 결과를 끌어 올 때 런타임에 폴딩 또는 접지 않음이 결정되고 쿼리 계획이 동적임을 나타냅니다. 이러한 지표는 ODBC 또는 OData 연결에서만 나타날 수 있습니다. | |
불투명 | 불투명 표시기는 결과 쿼리 계획이 어떤 이유로 결정적이지 않다는 것을 알려줍니다. 일반적으로 실제 "상수" 테이블이 있거나 표시기 및 쿼리 계획 도구에서 해당 변환 또는 커넥터를 지원하지 않음을 나타냅니다. | |
알 수 없음 | 알 수 없는 지표는 오류로 인해 또는 테이블 이외의 항목(예: 레코드, 목록 또는 기본 형식)에서 쿼리 계획 평가를 실행하려고 시도하여 쿼리 계획이 없음을 나타냅니다. |
예제 분석
예제 분석을 위해 먼저 ADVENTURE Works(SQL)의 Production.Product 테이블에 연결합니다. 초기 로드는 초기 예제와 유사하게 다음 이미지와 같습니다.
접는 단계를 더 추가하면 오른쪽에 녹색 선이 확장됩니다. 이 확장은 이 단계도 접기 때문에 발생합니다.
접지 않는 단계를 추가하면 다른 표시기가 표시됩니다. 예를 들어 각 단어를 접지 않도록 대문자로 표시합니다. 표시기가 변경되어 이 단계를 기준으로 접기가 중지되었음을 나타냅니다. 앞에서 멘션 이전 단계는 여전히 접습니다.
각 단계 대문자화에 의존하는 더 많은 단계 다운스트림 추가는 계속 접지 않습니다.
그러나 최적화된 쿼리 계획이 모두 한 번 더 접을 수 있도록 대문자를 적용한 열을 제거하면 다음 이미지와 같은 결과가 표시됩니다. 그러나 이와 같은 것은 드문 일입니다. 이 이미지는 단계의 순서뿐만 아니라 실제로 적용되는 변환도 보여 줍니다.