쿼리 축소 표시기

비고

이 문서를 읽기 전에 파워 쿼리 쿼리 평가 및 쿼리 폴딩 개요를 읽어 파워 쿼리 폴딩이 작동하는 방식을 더 잘 이해할 수 있습니다.

쿼리 접기 표시기를 사용하면 어떤 단계가 접이고 어떤 단계가 접지 않는지 이해할 수 있습니다. 파워 쿼리가 해당 변환 작업을 데이터 원본 쿼리로 변환하여 데이터 원본에서 실행할 때 단계가 폴딩됩니다.

쿼리 접기 표시기를 사용하는 경우 접기를 중단하는 변경을 수행할 때 명확하게 표시됩니다. 이 기능을 사용하면 문제를 해결하고, 성능 문제를 방지하고, 쿼리에 대한 인사이트를 높일 수 있습니다. 대부분의 경우 단계는 접히거나 접히지 않습니다. 그러나 결과가 명확하지 않은 경우가 많습니다. 단계 진단 표시기 섹션에서는 이러한 사례(접기, 불투명 및 알 수 없음)를 다룹니다.

비고

쿼리 접기 표시기 기능은 파워 쿼리 Online에서만 사용할 수 있습니다.

쿼리 폴딩 진단 해석하기

파워 쿼리 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 연결에서만 나타날 수 있습니다.
불투명 불투명 표시기는 결과 쿼리 계획이 어떤 이유로 결정적이지 않다는 것을 알려줍니다. 일반적으로 실제 "상수" 테이블이 있거나 표시기 및 쿼리 계획 도구가 해당 변환 또는 커넥터를 지원하지 않음을 나타냅니다.
알 수 없음 알 수 없는 지표는 오류로 인해 또는 테이블 이외의 항목(예: 레코드, 목록 또는 기본 형식)에서 쿼리 계획 평가를 실행하려고 시도하여 쿼리 계획이 없음을 나타냅니다.

쿼리 폴딩 표시기 분석하기

쿼리 접기 표시기를 분석하려면 AdventureWorks(SQL)의 Production.Product 테이블에 연결합니다. 초기 로드는 다음 이미지와 같이 원본 단계를 결정적이지 않은 것으로 표시하고 탐색 단계를 접는 것으로 표시합니다.

Product 테이블을 로드하기 위한 초기 단계 표시기의 스크린샷

접는 단계를 더 추가하면 오른쪽의 녹색 선을 확장합니다. 이 확장은 이 단계가 접히는 과정에서도 발생합니다.

이전 쿼리에 열 제거 단계를 추가하면 녹색 접이식 표시기 줄이 확장되는 방법을 보여 주는 스크린샷

접지 않는 단계를 추가하면 다른 표시기가 표시됩니다. 예를 들어 각 단어에 대문자를 사용한다는 규칙은 변하지 않습니다. 표시기가 변경되어 이 단계를 기준으로 접기가 중지되었음을 나타냅니다. 앞에서 설명했듯이 이전 단계는 여전히 접혀 있습니다.

단어의 첫 글자를 대문자로 표시하는 단계를 추가하면 접이식이 중단되는 방법을 보여 주는 스크린샷

각 단어의 첫 글자를 대문자로에 의존하는 후속 단계를 더 추가해도 계속 폴딩되지 않습니다.

더 많은 단계를 추가한 후 폴딩이 발생하지 않는 방법을 보여 주는 스크린샷

그러나 대/소문자 변환을 적용한 열을 제거하면 최적화된 쿼리 계획에 다시 폴딩을 적용할 수 있습니다. 이 드문 결과에서 다음 이미지와 같이 이전 단계가 접지 않더라도 마지막 단계는 접습니다. 이 결과는 단계 순서와 적용되는 변환 모두에 따라 폴딩이 어떻게 달라지는지 보여 줍니다.

문제가 있는 열을 제거하면 단계를 제거하지 않고 접을 수 있는 방법을 보여 주는 스크린샷