티스토리 뷰

Microsoft Faric/Power BI

Power Query와 DAX

정홍주 2022. 4. 4. 08:00

 

Power Query와 DAX

 

Power BI 세미나, 교육을 진행하면서 가끔 듣는 말이 Power Query(M language) 보다는 DAX를 더 집중해서 해달라는 말을 많이 듣는다. DAX 요구사항이 많다면 모르지만 아직 요구사항이 식별되지 않은 상황이라는 것이 문제다. 개인적으로는 Power Query(M language)와 DAX를 거의 동일하게 보면서 발생하는 오해라고 생각한다.

 

일단 Power Query는 데이터를 로드하기 전에 데이터 클렌징, 데이터 변환 등을 수행하며 BI의 ETL(Extract, Transform, Load)의 Transform에 해당된다. Power BI의 데이터 모델에 데이터를 적재하기 전의 변환 작업에 해당된다. Power BI Desktop에서 데이터 변환을 클릭하면 Power Query 편집기가 나타난다. Power Query 편집기에서 대부분의 작업은 리본의 메뉴를 통해서 진행되며, 필요시 고급 편집기를 통해 M language를 통해 작업할 수 있다. Power Query 편집기는 Excel에서도 제공되며 효과적으로 데이터 변환을 할 수 있는 강력한 도구가 된다.

 

Power Query 편집기에서의 변환 작업이 아주 많고, 오래 걸린다면 데이터 로드 또는 데이터 새로 고침 시간이 오래 걸리게 되지만 데이터가 로드되고 난 이후 사용자의 데이터 탐색 작업에는 영향이 미치지 않는다. [도구] 탭의 진단 시작을 통해 데이터 변환 작업의 병목을 찾고 성능을 개선할 수 있다.

 

DAX(Data Analysis Expression)의 경우는 Power BI 데이터 모델에 계산 열, 측정값, 테이블을 추가할 수 있다. DAX의 함수 중 일부는 Excel 함수와 유사하지만, 나머지는 사뭇 다르다. 계산 열의 경우 데이터 모델에 열이 추가되며 값을 가지게 되며, 측정값은 컨텍스트에 따라 값이 표시된다.

Power BI Desktop에서는 직접 DAX 수식을 사용하지 않아도 여러 요구사항을 해결할 수 있는 기능을 제공하고 있다. 원형, 막대 차트 등에서 총퍼센트를 표시해주며, 필터에서 상위 N을 적용하여 필터링할 수 있고 빠른 측정값을 통해 다양한 작업을 수행할 수 있다. 필요시 직접 식을 작성할 수 있다. DAX 식을 직접 작성하지 않아도 총퍼센트, 상위 N, 빠른 측정값을 통해 일반적인 요구사항을 해결할 수 있다. 또한 DAX를 통한 필드와 측정값을 통해 차트의 조건부 서식을 적용할 수 있다.

 

DAX를 추가하게 되면 메모리가 증가하며 보기 메뉴의 성능 분석기를 통해 사용자가 보고서를 탐색할 때 데이터를 쿼리하고 결과를 렌더링하는데 소요되는 시간을 확인할 수 있다.

 

Power Query와 DAX는 실행되는 단계와 시기가 다르며, 해결가능한 요구사항도 상이하다. 요구사항을 먼저 식별하고 이를 해결하기 위해 Power Query를 사용할지, DAX를 사용할지를 결정해야 한다. 무조건 DAX를 쓴다는 것은 Power BI를 잘 모르고 작업하고 있다는 것을 의미한다.

예를 들어, 데이터를 살펴보니 FirstName 필드와 LastName 필드가 있어 이를 Name이라는 새로운 열로 합치려고 할 경우를 예로 들면, Power Query와 DAX에서 모두 작업할 수 있다. 하지만 이런 내용은 Power Query에서 수행하여 데이터를 로드하는 것이 메모리 측면에서 더 이점이 크다. 데이터를 살펴보니 피벗팅이 되어 있는 경우, Power Query에서 피벗 해제는 간단하게 수행할 수 있다. 전년대비변화, 전월/전주 대비 변화, 다른 테이블의 열을 참조하는 경우 등은 DAX에서 수행해야 한다.

날짜 테이블(시간 차원)을 Power Query와 DAX에서 수식을 통해 생성할 수 있다. 사실 날짜 테이블 같은 경우는 DW(데이터베이스)에서 생성하는 것이 가장 효과적이다. 데이터베이스가 아닌 Power Query와 DAX에서 날짜 테이블을 생성해야 한다면 Power Query에서 생성하는 것이 더 효과적이라고 할 수 있다.

 

정리해보자면 Power Query와 DAX는 단계와 실행 시기가 다르며, 용도가 다르다는 것이다. 먼저 보고서에서 필요한 요구사항이 무엇인지를 인식해야 한다. 그리고 그 요구사항을 해결하기 위해 DAX를 사용할지 Power Query를 사용할지를 결정할 수 있다.

댓글