다음을 통해 공유


Power BI Desktop의 DirectQuery 모델 문제 해결

이 문서는 Power BI Desktop 또는 Power BI 서비스에서 개발하는 Power BI DirectQuery 데이터 모델의 성능 문제를 진단하는 데 도움이 됩니다. 이 문서에서는 보고서를 최적화하는 데 도움이 되는 자세한 정보를 가져오는 방법도 설명합니다.

Power BI 서비스 또는 Power BI Report Server가 아닌 Power BI Desktop에서 성능 문제 진단을 시작해야 합니다. 성능 문제는 종종 기본 데이터 원본의 성능 수준에 따라 달라집니다. 온-프레미스 게이트웨이와 같은 구성 요소를 포함하지 않고 격리된 Power BI Desktop 환경에서 이러한 문제를 보다 쉽게 식별하고 진단할 수 있습니다.

Power BI Desktop에서 성능 문제를 찾을 수 없는 경우 Power BI 서비스에서 보고서의 세부 사항을 중점적으로 조사할 수 있습니다.

또한 페이지의 많은 시각적 개체를 살펴보기 전에 개별 시각적 개체로 문제를 격리해야 합니다.

성능 분석기

성능 분석기는 문제 해결 프로세스 전체에서 성능 문제를 식별하는 데 유용한 도구입니다. Power BI Desktop에서 페이지의 속도가 느린 단일 시각적 개체를 식별할 수 있는 경우 성능 분석기를 사용하여 Power BI Desktop이 기본 원본으로 보내는 쿼리를 확인할 수 있습니다.

기본 데이터 원본이 내보내는 추적 및 진단 정보를 볼 수도 있습니다. 이러한 추적에는 쿼리 실행 방법 및 쿼리 개선 방법에 대한 유용한 정보가 포함될 수 있습니다.

원본의 추적 정보가 없더라도 Power BI에서 보낸 쿼리를 실행 시간과 함께 볼 수 있습니다.

참고 항목

DirectQuery SQL 기반 원본의 경우 성능 분석기는 SQL Server, Oracle 및 Teradata 데이터 원본에 대한 쿼리만 표시합니다.

추적 파일

기본적으로 Power BI Desktop은 지정된 세션 동안 FlightRecorderCurrent.trc라는 추적 파일에 이벤트를 기록합니다. 현재 사용자의 AppData 폴더(<User>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces)에서 현재 세션에 대한 추적 파일을 찾을 수 있습니다.

다음 DirectQuery 데이터 원본은 Power BI가 추적 파일로 보내는 모든 쿼리를 작성합니다. 로그는 나중에 다른 DirectQuery 원본을 지원할 수 있습니다.

  • SQL Server
  • Azure SQL Database
  • Azure Synapse Analytics(이전의 SQL Data Warehouse)
  • Oracle
  • Teradata
  • SAP HANA

Power BI Desktop에서 추적 파일 폴더로 쉽게 이동하려면 파일>옵션 및 설정>옵션을 선택한 다음, 진단을 선택합니다.

크래시 덤프/추적 폴더를 여는 링크가 포함된 Power BI Desktop 옵션 화면의 진단 섹션 스크린샷.

크래시 덤프 수집에서 크래시 덤프/추적 폴더 열기 링크를 선택하여 <User>\AppData\Local\Microsoft\Power BI Desktop\Traces 폴더를 엽니다.

해당 폴더의 부모 폴더로 이동한 다음, 열려 있는 모든 Power BI Desktop 인스턴스에 대해 하나의 작업 영역 하위 폴더가 포함된 AnalysisServicesWorkspaces 폴더를 엽니다. 하위 폴더 이름에는 AnalysisServicesWorkspace2058279583과 같은 정수 접미사가 포함되어 있습니다.

AnalysisServicesWorkspace 폴더에는 현재 Power BI 세션에 대한 추적 파일 FlightRecorderCurrent.trc가 포함된 Data 하위 폴더가 포함됩니다. 이 폴더는 연결된 Power BI Desktop 세션이 종료되면 사라집니다.

무료 SSMS(SQL Server Management Studio) 다운로드의 일부로 가져올 수 있는 SQL Server Profiler 도구를 사용하여 추적 파일을 열 수 있습니다. SQL Server Management Studio를 다운로드하고 설치한 후 SQL Server Profiler를 엽니다.

강조 표시된 추적이 없는 SQL Server Profiler 창의 스크린샷.

추적 파일을 열려면 다음을 수행합니다.

  1. SQL Server Profiler에서 파일>열기>추적 파일을 선택합니다.

  2. 현재 열려 있는 Power BI 세션에 대한 추적 파일의 경로(예: <User>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces\AnalysisServicesWorkspace2058279583\Data)를 입력하고 FlightRecorderCurrent.trc를 엽니다.

SQL Server Profiler에서 현재 세션의 모든 이벤트를 표시합니다. 아래 스크린샷에는 쿼리에 대한 이벤트 그룹이 강조 표시되어 있습니다. 각 쿼리 그룹에 있는 이벤트는 다음과 같습니다.

  • Power BI UI에서 시각적 개체 또는 필터를 변경하거나 Power Query 편집기에서 데이터를 필터링하거나 변환하여 생성된 DAX 쿼리의 시작과 끝을 나타내는 Query BeginQuery End 이벤트

  • DAX 쿼리 계산 중에 기본 데이터 원본으로 보낸 쿼리를 나타내는 하나 이상의 DirectQuery BeginDirectQuery End 이벤트 쌍

쿼리 시작 및 쿼리 종료 이벤트가 강조 표시된 SQL Server Profiler의 스크린샷.

여러 DAX 쿼리를 병렬로 실행할 수 있으므로 여러 그룹의 이벤트를 인터리브할 수 있습니다. ActivityID 값을 사용하여 동일한 그룹에 속하는 이벤트를 확인할 수 있습니다.

다음 열도 고려의 대상이 됩니다.

  • 텍스트 데이터: 이벤트의 텍스트 세부 정보입니다. Query BeginQuery End 이벤트의 경우 DAX 쿼리가 세부 정보로 표시됩니다. DirectQuery BeginDirectQuery End 이벤트의 경우 기본 원본으로 전송된 SQL 쿼리가 세부 정보로 표시됩니다. 현재 선택한 이벤트에 대한 TextData 값도 화면 아래쪽의 창에 표시됩니다.
  • EndTime: 이벤트가 완료된 시간입니다.
  • 기간: DAX 또는 SQL 쿼리를 실행하는 데 걸리는 시간(밀리초)을 나타냅니다.
  • 오류: 오류가 발생했는지 여부를 나타내며, 오류가 발생한 경우 이벤트가 빨간색으로 표시됩니다.

앞의 이미지는 더 많은 관심이 있는 열을 보다 쉽게 볼 수 있도록 덜 관심 있는 열 중 일부가 좁혀졌습니다.

잠재적인 성능 문제를 진단하는 데 도움이 되는 추적을 캡처하려면 이 접근 방식을 따릅니다.

  1. 여러 작업 영역 폴더로 인한 혼동을 피하기 위해 단일 Power BI Desktop 세션을 엽니다.

  2. Power BI Desktop에서 관심 있는 일련의 작업을 수행합니다. 관심 있는 이벤트가 추적 파일로 플러시되도록 하려면 몇 가지 추가 작업을 포함합니다.

  3. SQL Server Profiler를 열고 추적을 검사합니다. Power BI Desktop을 닫으면 추적 파일이 삭제된다는 것에 유의하세요. 또한 Power BI Desktop의 추가 작업은 바로 표시되지 않으며, 새 이벤트를 보려면 추적 파일을 닫고 다시 열어야 합니다.

추적 파일을 쉽게 해석할 수 있도록 개별 세션을 적절한 크기로 작게 유지합니다(예: 작업 수백 초가 아닌 10초). 추적 파일 크기에도 제한이 없으므로 긴 세션의 경우 조기 이벤트가 삭제될 가능성이 있습니다.

쿼리 및 하위 쿼리 형식

Power BI Desktop 쿼리의 일반적인 형식은 쿼리가 참조하는 각 모델 테이블에 하위 쿼리를 사용하는 것입니다. Power Query 편집기 쿼리에서 하위 SELECT 쿼리를 정의합니다. 예를 들어 SQL Server 관계형 데이터베이스에 다음과 같은 TPC-DS 테이블이 있다고 가정합니다.

관련 항목, Web_Sales, Customer 및 Date-dim TPC-DS 테이블을 보여 주는 Power BI Desktop 모델 뷰 다이어그램의 스크린샷.

Power BI 시각적 개체에서 다음 식은 SalesAmount 측정값을 정의합니다.


SalesAmount = SUMX(Web_Sales, [ws_sales_price] * [ws_quantity])

범주별 판매량을 표시하는 Power BI Desktop 누적 세로 막대형 차트의 스크린샷.

시각적 개체를 새로 고침하면 다음 이미지와 같은 T-SQL 쿼리가 생성됩니다. Web_Sales, ItemDate_dim 모델 테이블에 대한 세 가지 하위 쿼리가 있습니다. 시각적 개체가 4개의 열만 참조하더라도 각 쿼리는 모든 모델 테이블 열을 반환합니다.

이러한 음영 처리된 하위 쿼리는 파워 쿼리에 사용된 쿼리에 대한 정확한 정의입니다. 이러한 하위 쿼리 사용은 DirectQuery에서 지원하는 데이터 원본의 성능에 영향을 주지 않습니다. SQL Server와 같은 데이터 원본은 다른 열에 대한 참조를 최적화합니다.

Power BI에서 이 패턴을 사용하는 한 가지 이유는 특정 쿼리 문을 사용하도록 파워 쿼리의 쿼리를 정의할 수 있기 때문입니다. Power BI에서는 쿼리를 다시 작성하지 않고 제공된 형태 그대로 사용합니다. 이 패턴은 CTE(공용 테이블 식) 및 저장 프로시저를 사용하는 쿼리 문 사용을 제한합니다. 하위 쿼리에서는 이러한 문을 사용할 수 없습니다.

각 모델 테이블에 하나씩 포함된 하위 쿼리를 보여 주는 T-SQL 쿼리의 스크린샷.

게이트웨이 성능

게이트웨이 성능 문제를 해결하는 방법에 대한 자세한 내용은 게이트웨이 문제 해결 - Power BI를 참조하세요.

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

궁금한 점이 더 있나요? Power BI 커뮤니티에 질문합니다.