다음을 통해 공유


쿼리 진단

쿼리 진단을 사용하면 Power BI Desktop에서 작성 및 새로 고침 시 파워 쿼리가 수행하는 작업을 더 잘 이해할 수 있습니다. 전체 새로 고침 중에 사용할 수 있는 기능을 추가하는 등 나중에 이 기능을 확장할 예정이지만, 이때 이 기능을 사용하여 내보내는 쿼리의 종류, 새로 고침을 작성하는 동안 발생할 수 있는 속도 저하 및 어떤 종류의 백그라운드 이벤트가 발생하는지 이해할 수 있습니다.

쿼리 진단을 사용하려면 파워 쿼리 편집기 리본의 도구 탭으로 이동합니다.

파워 쿼리 도구 리본 아래에 있는 쿼리 진단 기능의 스크린샷.

기본적으로 쿼리 진단은 IT 정책에 따라 관리 권한을 실행해야 할 수 있습니다. 쿼리 진단을 실행할 수 없는 경우 Power BI Desktop 옵션 페이지를 열고 진단 탭에서 쿼리 편집기 사용을 선택합니다(관리자 권한으로 실행할 필요가 없음). 이 선택을 통해 파워 쿼리 편집기가 아닌 Power BI로 전체 새로 고침을 수행할 때 진단을 추적할 수 없게 됩니다. 그러나 미리 보기, 작성 등을 할 때 계속 사용할 수 있습니다.

쿼리 편집기 사용 옵션이 강조 표시된 쿼리 진단 옵션의 스크린샷.

진단을 시작할 때마다 파워 쿼리에서 발생하는 모든 평가 추적을 시작합니다. 대부분의 사용자가 생각하는 평가는 새로 고침을 누르거나 처음으로 데이터를 검색할 때입니다. 그러나 커넥터에 따라 평가를 일으킬 수 있는 많은 작업이 있습니다. 예를 들어 SQL 커넥터를 사용하여 필터링할 값 목록을 검색하면 평가도 시작되지만 사용자 쿼리와 연결되지 않으며 진단에 표시됩니다. 다른 시스템 생성 쿼리에는 탐색기 또는 데이터 가져오기 환경이 포함될 수 있습니다.

진단 단계를 누르면 파워 쿼리에서 보고 있는 단계만 특별하게 평가합니다. 그런 다음 쿼리의 다른 단계에 대한 진단을 표시하지 않고 해당 단계에 대한 진단을 표시합니다. 이 평가를 통해 문제에 대한 좁은 보기를 훨씬 쉽게 얻을 수 있습니다.

진단 시작에서 모든 추적을 기록하는 경우 진단 중지를 누르는 것이 중요합니다. 진단을 중지하면 엔진이 기록된 추적을 수집하고 적절한 출력으로 구문 분석할 수 있습니다. 이 단계가 없으면 추적이 손실됩니다.

진단 유형

현재 세 가지 유형의 진단을 제공하며, 그 중 하나는 두 가지 수준의 세부 정보를 제공합니다.

이러한 진단 중 첫 번째는 자세한 보기와 요약된 뷰가 있는 기본 진단입니다. 요약 보기는 쿼리에서 시간이 소요되는 위치에 대한 즉각적인 인사이트를 제공하기 위한 것입니다. 상세 보기는 훨씬 더 깊고 한 줄씩 표시되며, 일반적으로 전원 사용자의 심각한 진단에만 필요합니다.

이 보기의 경우 데이터 원본 쿼리 열과 같은 일부 기능은 현재 특정 커넥터에서만 사용할 수 있습니다. 우리는 미래에이 범위의 폭을 확장하기 위해 노력할 것입니다.

데이터 개인 정보 파티션을 사용하면 데이터 개인 정보에 사용되는 논리 파티션을 더 잘 이해할 수 있습니다.

참고 항목

파워 쿼리는 직접 트리거되지 않았을 수 있는 평가를 수행할 수 있습니다. 이러한 평가 중 일부는 쿼리를 가장 최적화하거나 더 나은 사용자 환경을 제공할 수 있도록 메타데이터를 검색하기 위해 수행됩니다(예: 필터 행 환경에 표시되는 열 내의 고유 값 목록 검색). 다른 커넥터는 병렬 평가를 처리하는 방법과 관련이 있을 수 있습니다. 동시에 쿼리 진단에서 타당하지 않은 쿼리를 반복하는 경우 일반적인 지원 채널을 통해 자유롭게 연락할 수 있습니다. 피드백은 제품을 개선하는 방법입니다.

요약된 뷰와 자세한 보기 비교

쿼리 진단은 요약 및 상세라는 두 가지 뷰를 제공합니다. 요약된 뷰는 여러 관련 작업을 단일 작업으로 "축소"합니다. 이 프로세스에서는 각 작업에서 수집된 세부 정보가 결합되고 배타적 기간이 합산됩니다. 이 프로세스의 일부로 정보가 손실되지 않습니다.

요약된 보기는 평가 중에 발생한 작업에 대한 개요를 제공하여 쉽게 개략적으로 검토할 수 있습니다. 특정 작업에 대한 추가 분석이 필요한 경우 그룹 ID를 확인하고 세부 정보 보기에서 그룹화된 해당 작업을 볼 수 있습니다.

여러 평가 설명

파워 쿼리 편집기에서 새로 고침이 발생하면 사용자에게 유창한 사용자 환경을 제공하기 위해 백그라운드에서 많은 작업이 수행됩니다. 예를 들어 미리 보기를 새로 고치면 계산기는 지정된 각 쿼리의 마지막 단계를 실행합니다. 그러나 백그라운드에서 n-1 단계, n-2, 단계 등을 순차적으로 실행합니다. 따라서 단계를 한 단계 뒤로 물러나면 이미 사용할 수 있습니다.

더 높은 성능을 제공하기 위해 현재 일부 캐싱이 수행되므로 최종 쿼리 계획의 모든 부분을 다시 실행할 필요가 없습니다. 이 캐싱은 일반적인 작성에 유용하지만 나중에 캐시된 데이터를 끌어오기 때문에 항상 올바른 단계 비교 정보를 얻지는 못합니다.

진단 스키마

ID

기록 결과를 분석할 때는 전용 기간 %와 같은 열이 의미가 있도록 기록 세션을 ID별로 필터링하는 것이 중요합니다.

ID는 복합 식별자입니다. 두 개의 숫자로 구성됩니다. 하나는 점 앞에, 다른 하나는 숫자 앞에 있습니다. 첫 번째 숫자는 단일 사용자 작업으로 인해 발생한 모든 평가에서 동일합니다. 즉, 새로 고침을 두 번 누르면 점 앞에 두 개의 서로 다른 숫자가 있으며, 각 사용자 활동에 대해 하나씩 표시됩니다. 이 번호 매기기는 지정된 진단 기록에 대해 순차적으로 수행됩니다.

두 번째 숫자는 엔진의 평가를 나타냅니다. 이 숫자는 평가가 큐에 대기 중인 프로세스의 수명 동안 순차적으로 표시됩니다. 여러 진단 기록 세션을 실행하는 경우 이 수는 여러 세션에서 계속 증가합니다.

요약하자면, 기록을 시작하고, 평가를 한 번 누르고, 기록을 중지하면 진단에 몇 가지 ID가 표시됩니다. 그러나 하나의 작업만 수행했기 때문에 모두 1.1, 1.2, 1.3 등입니다.

activityId와 evaluationId의 조합은 점으로 구분되어 단일 기록 세션의 평가를 위한 고유 식별자를 제공합니다.

쿼리

파워 쿼리 편집기의 왼쪽 창에 있는 쿼리의 이름입니다.

단계

파워 쿼리 편집기의 오른쪽 창에 있는 단계의 이름입니다. 필터 드롭다운과 같은 항목은 일반적으로 단계를 새로 고치지 않더라도 필터링하는 단계와 연결됩니다.

범주

작업의 범주입니다.

데이터 원본 종류

이 데이터는 SQL 또는 Oracle과 같이 액세스하는 데이터 원본의 종류를 알려줍니다.

연산

수행되는 실제 작업입니다. 이 작업에는 계산기 작업, 연결 열기, 데이터 원본으로 쿼리 보내기 등이 포함될 수 있습니다.

시작 시간

작업이 시작된 시간입니다.

종료 시간

작업이 종료된 시간입니다.

전용 기간(%)

이벤트의 전용 기간 열은 이벤트가 활성화된 시간입니다. 이는 이벤트의 시작 시간 열과 종료 시간 열의 값을 빼서 발생하는 "기간" 값과 대조됩니다. 이 "기간" 값은 이벤트가 시작된 시점과 종료 시점 사이에 경과된 총 시간을 나타내며, 여기에는 이벤트가 일시 중단되거나 비활성 상태이고 다른 이벤트가 리소스를 소비하는 시간이 포함될 수 있습니다.

전용 기간 %는 ID 열이 나타내는 대로 지정된 평가 내에서 약 100%까지 추가됩니다. 예를 들어 ID가 1.x인 행을 필터링하는 경우 배타적 기간 백분율의 합계는 약 100%입니다. 지정된 진단 테이블에 있는 모든 행의 배타적 기간 % 값을 합산하는 경우에는 그렇지 않습니다.

전용 기간

%가 아닌 절대 기간입니다. 평가의 총 기간(즉, 이벤트가 비활성 상태인 경우 전용 기간 + 시간)은 다음 두 가지 방법 중 하나로 계산할 수 있습니다.

  • "평가"라는 작업을 찾습니다. 종료 시간-시작 시간 간의 차이로 인해 이벤트의 총 기간이 발생합니다.

  • 이벤트의 모든 작업의 최소 시작 시간을 최대 종료 시간에서 뺍니다. 이벤트에 대해 수집된 정보가 총 기간을 고려하지 않는 경우 이 시간 간격을 고려하기 위해 "추적 간격"이라는 작업이 생성됩니다.

리소스

데이터에 액세스하는 리소스입니다. 이 리소스의 정확한 형식은 데이터 원본에 따라 달라집니다.

데이터 원본 쿼리

파워 쿼리는 가능한 한 백 엔드 데이터 원본에 대해 쿼리의 많은 부분을 실행하는 작업인 폴딩이라는 작업을 수행합니다. 사용하도록 설정된 DirectQuery 모드(파워 쿼리를 통해)에서는 폴드 실행만 변환합니다. 가져오기 모드에서는 접을 수 없는 변환이 대신 로컬로 실행됩니다.

데이터 원본 쿼리 열을 사용하면 백 엔드 데이터 원본에 대해 전송된 쿼리 또는 HTTP 요청/응답을 볼 수 있습니다. 편집기에서 쿼리를 작성할 때 많은 데이터 원본 쿼리가 내보내집니다. 이러한 쿼리 중 일부는 미리 보기를 렌더링하는 실제 최종 데이터 원본 쿼리입니다. 그러나 다른 쿼리는 데이터 프로파일링, 필터 드롭다운, 조인 정보, 스키마에 대한 메타데이터 검색 및 기타 작은 쿼리 수에 대한 것일 수 있습니다.

일반적으로 특정 이유가 없는 한 내보낸 데이터 원본 쿼리의 수에 대해 염려해서는 안 됩니다. 대신 적절한 콘텐츠가 검색되는지 확인하는 데 집중해야 합니다. 이 열은 파워 쿼리 평가가 완전히 접힌 것인지 확인하는 데 도움이 될 수도 있습니다.

추가 정보

커넥터에서 검색하는 많은 정보가 있습니다. 대부분은 비정형이며 표준 열 계층 구조에 잘 맞지 않습니다. 이 정보는 추가 정보 열의 레코드에 배치됩니다. 사용자 지정 커넥터에서 기록된 정보도 여기에 표시됩니다.

행 수

데이터 원본 쿼리에서 반환되는 행 수입니다. 모든 커넥터에서 사용하도록 설정되지 않았습니다.

콘텐츠 길이

일반적으로 정의된 대로 HTTP 요청에서 반환되는 콘텐츠 길이입니다. 이 스키마는 모든 커넥터에서 사용하도록 설정되지 않으며 청크에서 요청을 검색하는 커넥터의 경우 정확하지 않습니다.

사용자 쿼리인가요?

사용자가 작성하고 왼쪽 창에 있는 쿼리인지 또는 다른 사용자 작업에 의해 생성되었는지 여부를 나타내는 부울 값입니다. 다른 사용자 작업에는 데이터 가져오기 환경에서 필터 선택 또는 탐색기 사용과 같은 항목이 포함될 수 있습니다.

Path

경로는 단일 평가 내의 모든 작업에 대한 간격 트리의 일부로 볼 때 작업의 상대 경로를 나타냅니다. 트리의 위쪽(루트)에는 경로가 "0"인 Evaluation이라는 단일 작업이 있습니다. 이 평가의 시작 시간은 전체적으로 이 평가의 시작에 해당합니다. 이 평가의 종료 시간은 전체 평가가 완료된 시간을 보여줍니다. 이 최상위 작업은 트리의 루트 역할을 하는 유일한 용도이므로 전용 기간은 0입니다.

루트에서 추가 작업 분기입니다. 예를 들어 작업에 경로로 "0/1/5"가 있을 수 있습니다. 이 경로는 다음과 같이 이해됩니다.

  • 0: 트리 루트
  • 1: 현재 작업의 부모
  • 5: 현재 작업의 인덱스

작업 "0/1/5"에는 자식 노드가 있을 수 있습니다. 이 경우 경로의 형식은 "0/1/5/8"이고 8은 자식의 인덱스입니다.

그룹 ID

두 개 이상의 작업을 결합하면 세부 정보가 손실되는 경우 발생하지 않습니다. 그룹화는 평가 중에 실행되는 "명령"의 근사값을 계산하도록 설계되었습니다. 자세한 보기에서 여러 작업은 요약 보기에 집계된 그룹에 해당하는 그룹 ID를 공유합니다.

대부분의 열과 마찬가지로 그룹 ID는 ID 열로 필터링된 특정 평가 내에서만 관련이 있습니다.

데이터 개인 정보 파티션 스키마

ID

다른 쿼리 진단 결과의 ID와 동일합니다. 정수 부분은 단일 작업 ID를 나타내고 소수 부분은 단일 평가를 나타냅니다.

파티션 키

방화벽 파티션으로 사용되는 쿼리/단계에 해당합니다.

방화벽 그룹

파티션의 개인 정보 수준에 대한 세부 정보를 포함하여 이 파티션을 별도로 평가해야 하는 이유를 설명하는 분류입니다.

액세스된 리소스

이 파티션에서 액세스하는 모든 리소스에 대한 리소스 경로 목록이며 일반적으로 데이터 원본을 고유하게 식별합니다.

파티션 입력

현재 파티션이 의존하는 파티션 키 목록입니다(이 목록을 사용하여 그래프를 작성할 수 있음).

파티션의 쿼리/단계 위에 계산되는 식입니다. 경우에 따라 쿼리/단계와 일치합니다.

시작 시간

이 파티션에 대한 평가가 시작된 시간입니다.

종료 시간

이 파티션에 대한 평가가 종료된 시간입니다.

기간

종료 시간에서 시작 시간을 뺀 값입니다.

전용 기간

파티션이 단일 스레드에서 실행될 것으로 가정하는 경우 배타적 기간은 이 파티션에 기인할 수 있는 "실제" 기간입니다.

전용 기간 %

배타적 기간(백분율)입니다.

진단

이 열은 쿼리 진단 "집계됨" 또는 "상세"도 캡처된 경우에만 표시되므로 사용자가 두 진단 출력 간에 해당할 수 있습니다.

성능 카운터 스키마

성능 카운터를 실행하면 1초마다 파워 쿼리가 리소스 사용률의 스냅샷을 만듭니다. 이 스냅샷은 매우 빠른 쿼리에는 유용하지 않지만 더 많은 리소스를 사용하는 쿼리에 유용할 수 있습니다.

% 프로세서 시간

쿼리에서 프로세서가 소요한 시간의 백분율입니다. 이 비율은 여러 프로세서로 인해 100% 이상에 도달할 수 있습니다.

총 프로세서 시간

쿼리에 소요된 총 프로세서 시간입니다.

초당 IO 데이터 바이트 수

데이터 원본에서 받은 데이터의 처리량 속도(초당 바이트 수)입니다.

커밋(바이트)

평가에서 예약된 가상 메모리의 양입니다.

작업 집합(바이트)

평가에서 예약된 메모리 양입니다.