성능 문제 해결
경우에 따라서는 보고서를 실행할 때 각 조직에서 성능 문제를 해결해야 합니다. Power BI는 문제를 해결하고 프로세스를 간소화하는 데 도움이 되는 성능 분석기 도구를 제공합니다.
조직 내 영업 팀에 대한 보고서를 작성하는 시나리오를 생각해 보세요. DirectQuery를 통해 데이터베이스에 대한 데이터 연결을 만들어 영업 팀의 SQL 데이터베이스 내 여러 테이블에 있는 데이터를 가져왔습니다. 예비 시각적 개체 및 필터를 만들 때 일부 테이블은 다른 테이블보다 더 빨리 쿼리되며 일부 필터는 처리하는 데 걸리는 시간이 다른 필터에 비해 더 길어집니다.
파워 쿼리에서 성능 최적화
파워 쿼리의 성능은 데이터 원본 수준의 성능에 따라 달라집니다. 파워 쿼리에서 제공하는 각종 데이터 원본은 광범위하며 각 원본에 대한 성능 조정 기법도 이와 마찬가지로 다양합니다. 예를 들어 Microsoft SQL Server에서 데이터를 추출하는 경우, 제품에 대한 성능 조정 지침을 따라야 합니다. 좋은 SQL Server 성능 조정 기법으로는 인덱스 생성, 하드웨어 업그레이드, 실행 계획 조정, 데이터 압축 등이 있습니다. 이러한 주제는 여기서 자세히 다루지 않을 것이며 다만 Power BI 및 파워 쿼리를 사용할 때 데이터 원본을 더 친숙하게 파악하고 그 이점을 얻기 위한 예로만 다루고 있습니다.
파워 쿼리는 쿼리 정리(Query Folding)라는 기법을 통해 데이터 원본에서 충분한 성능을 활용합니다.
쿼리 정리
Power Query 편집기 내에서 쿼리 정리를 하면 Power BI 보고서의 성능을 향상시키는 데 도움이 됩니다. 쿼리 정리는 능동적으로 변환을 진행하는 동안 Power Query 편집기에서 수행하는 변환 및 편집이 기본 쿼리 또는 단순한 Select SQL 문으로 동시에 추적되는 프로세스입니다. 이 프로세스를 구현하는 이유는 이러한 변환이 원래의 데이터 원본 서버에서 발생하고 Power BI 컴퓨팅 리소스에 과부하가 걸리지 않도록 해야 하기 때문입니다.
파워 쿼리를 사용하여 Power BI에 데이터를 로드할 수 있습니다. 그런 다음, Power Query 편집기를 사용하여 열 이름 바꾸기 또는 열 삭제, 데이터 추가, 구문 분석, 필터링 또는 그룹화 등과 같이 데이터를 변환할 수 있습니다.
판매 데이터에서 일부 열의 이름을 바꾸고 구/군/시 및 시/도 열을 "도시 국가" 형식으로 병합한 시나리오를 살펴보겠습니다. 한편, 쿼리 정리 기능은 기본 쿼리에서 이러한 변경 내용을 추적합니다. 그런 다음, 데이터를 로드할 때 변환은 원래의 원본에서 독립적으로 실행되며 이를 통해 Power BI에서 성능이 최적화됩니다.
쿼리 정리의 이점에 포함되는 사항들은 다음과 같습니다.
데이터 새로 고침 및 증분 새로 고침의 효율성 향상. 쿼리 정리를 사용하여 데이터 테이블을 가져올 때 Power BI는 각 변환을 로컬에서 실행할 필요가 없기 때문에 리소스를 할당하고 데이터 새로 고침을 더 빨리 실행할 수 있습니다.
DirectQuery 및 듀얼 스토리지 모드와의 자동 호환. 모든 DirectQuery 및 이중 스토리지 모드 데이터 원본에는 직접 연결을 만들기 위한 백엔드 서버 처리 기능이 있어야 합니다. 즉, 쿼리 정리는 사용 가능한 자동 기능에 속합니다. 모든 변환을 단일 Select 문으로 축소할 수 있는 경우, 쿼리 정리가 발생할 수 있습니다.
다음 시나리오에서는 쿼리 정리의 실제 용례를 보여줍니다. 이 시나리오에서는 여러 테이블에 쿼리 세트를 적용합니다. 파워 쿼리를 사용하여 새 데이터 원본을 추가하고 Power Query 편집기로 이동한 후, 다음 그림에서 보는 바와 같이 쿼리 설정 창으로 이동하여 마지막에 적용된 단계를 마우스 오른쪽 단추로 클릭합니다.
기본 쿼리 보기 옵션을 사용할 수 없는 경우(굵은 글꼴로 표시되지 않음), 이 단계에서는 쿼리 정리가 불가능하며 기본 쿼리 보기를 사용할 수 있는 단계에 도달할 때까지 적용된 단계 영역에서 뒤로 이동하여 작업해야 합니다(굵은 글꼴로 표시됨). 이 프로세스는 의미 체계 모델을 변환하는 데 사용되는 네이티브 쿼리를 표시합니다.
기본 쿼리는 다음과 같은 변환에 사용할 수 없습니다.
- 인덱스 열 추가
- 서로 다른 두 원본을 사용하여 서로 다른 테이블의 열을 병합 및 추가
- 열의 데이터 형식 변경
여기서 기억해야 할 좋은 지침은 GROUP BY(그룹화 기준), SORT BY(정렬 기준), WHERE(위치), UNION ALL(모두 통합), JOIN(조인) 등의 연산자 및 절을 포함하는 Select SQL 문으로 변환을 번역할 수 있다면 쿼리 정리를 사용할 수 있다는 것입니다.
쿼리 접기는 데이터를 검색하고 가져오며 준비할 때 성능을 최적화하는 한 가지 옵션에 속하며 또 다른 옵션으로는 쿼리 진단이 있습니다.
쿼리 진단
쿼리 성능을 연구하는 데 사용할 수 있는 또 다른 도구는 쿼리 진단입니다. 이 기능을 사용하면 데이터를 로드하고 변환하며 파워 쿼리에서 데이터를 새로 고치고 쿼리 편집기에서 SQL 문을 실행하는 등의 작업을 수행하는 동안 어떤 병목 상태가 나타나는지를 확인할 수 있습니다.
Power Query 편집기에서 쿼리 진단에 액세스하려면 홈 리본에서 도구로 이동합니다. 데이터 변환을 시작하거나 Power Query 편집기에서 다른 편집을 수행할 준비가 되면 세션 진단 섹션에서 진단 시작을 선택합니다. 작업이 완료되면 진단 중지를 선택해야 합니다.
진단 단계를 선택하면 다음 이미지에서 보는 것처럼 해당 단계를 실행하는 데 걸리는 시간이 표시됩니다. 이 선택 영역은 하나의 단계를 완료하는 데 더 긴 시간이 소요되는 지 여부를 알려주며, 추가 조사를 위한 시작점으로 사용됩니다.
이 도구는 의미 체계 모델 로드, 데이터 새로 고침 실행 또는 기타 변환 작업 실행과 같은 작업에 대해 Power Query 쪽에서 성능을 분석하려는 경우에 유용합니다.
성능을 최적화하는 그 밖의 기술
Power BI에서 쿼리 성능을 최적화하는 그 밖의 방법에 포함되는 사항들은 다음과 같습니다.
원래의 데이터 원본에서 가능한 한 많은 데이터를 처리합니다. 파워 쿼리 및 Power Query 편집기를 사용하면 데이터를 처리할 수 있습니다. 그러나 이 작업을 완료하는 데 필요한 처리 능력으로 인해 보고서의 다른 영역에서 성능이 저하될 수 있습니다. 일반적으로 원시 데이터 원본에서 가능한 한 많은 데이터를 처리하는 것이 좋습니다.
기본 SQL 쿼리를 사용합니다. SQL 데이터베이스에 DirectQuery를 사용하는 경우(예: 시나리오의 경우), 저장 프로시저 또는 공통 테이블 식(CTE)에서 데이터를 끌어오지 않아야 합니다.
함께 바인딩된 경우, 날짜 및 시간을 구분합니다. 날짜 및 시간을 결합한 열이 테이블에 있는 경우, 해당 열을 Power BI으로 가져오기 전에 개별 열로 구분해야 합니다. 이 방법은 압축 기능을 향상시킵니다.
자세한 내용은 쿼리 정리 지침 및 쿼리 정리를 참조하세요.