본문 바로가기
데이터 분석 및 업무 자동화

Power BI 필터 컨텍스트와 행 컨텍스트 살펴보기

by 공부머리 2022. 3. 22.
반응형

Power BI의 기능을 원활하게 사용하려면 필터 컨텍스트와 행 컨텍스트의 개념을 이해해야 합니다. 그래야 측정값 또는 계산 열을 시각화 개체에 올바르게 반영할 수 있습니다. 오늘은 필터 컨텍스트와 행 컨텍스트에 대해서 정리해 보겠습니다.

 

요약

필터 컨텍스트와 행 컨텍스트는 DAX에 데이터 모델에서 측정값과 계산된 열을 평가하는 방법을 정확하게 알려줍니다. DAX 고급 기능을 사용하기 위해서 반드시 정확하게 이해해야 하는 개념입니다. 아래 테이블에서 필터 컨텍스트와 행 컨텍스트의 주요 특징을 정리해보겠습니다.

필터 컨텍스트 행 컨텍스트
필터 컨텍스트는 데이터 모델의 테이블을 필터링합니다.  행 컨텍스트는 테이블의 행을 반복합니다. 
DAX는 리포트의 행, 열, 슬라이서, 필터에 치수를 추가할 때 필터 컨텍스트를 만듭니다.  DAX는 계산된 열을 데이터 모델에 추가할 때 행 컨텍스트를 생성합니다.
'CALCULATE'를 사용하여 기존 필터 컨텍스트를 체계적으로 만들거나 수정할 수 있습니다.  반복 기능 (e.g. SUMX, RANKX, etc.)는 행 레벨 계산을 하기 위해서 행 컨텍스트를 사용합니다.
필터 컨텍스트는 항상 테이블 관계의 1쪽에서 M쪽으로 전파됩니다.  행 컨텍스트는 자동으로 테이블 관계간 전파되지 않습니다. 따라서 RELATED나 RELATEDTABLE 등을 사용해야 합니다.

 

상세 설명

필터 컨텍스트

측정값은 행, 열, 슬라이서, 필터 등의 필터 컨텍스트를 기반으로 평가됩니다. 이는 필드나 필터에 변경이 생길 때마다 측정값은 다시 계산된다는 것을 의미합니다. 이러한 필터링을 ‘초기 필터 컨텍스트’라고 부르고 이후에 CALCLATE() 함수를 사용하여 필터 컨텍스트를 변경할 수도 있습니다. 

 

초기 필터 컨텍스트의 흐름은 다음과 같습니다. 먼저 시각적 개체가 만든 초기 필터 컨텍스트는 데이터 모델에 연결된 테이블에 적용됩니다. 다음으로 테이블 사이의 관계를 이용해 연결된 테이블로 흘러갑니다. 이때 1쪽에서 M 쪽으로 흐릅니다. 다음으로 필터가 전파된 상태에서 자동으로 측정값이 계산됩니다.

 

필터 전파는 테이블의 관계를 이용해 자동으로 확산되는데 위에서 아래로 흐릅니다. 반대로 아래에서 위로는 흐르지 않습니다. 필터 흐름이 어떻게 작동하는지를 이해해야 합니다.

 

아래 그림을 가지고 추가 설명을 하겠습니다.

파워비아이 테이블 시각화 개체
측정값 테이블

  • 위 테이블 매트릭스 중 1번으로 표시된 값은 Products [ProductName]이 “Touring Tire”인 필터 컨텍스트를 기반으로 계산된 Total Orders 측정값입니다. 위 테이블에서 각 Total orders의 값은 각 Product에 해당하는 Total order 측정값을 반환해 줍니다.
  • 위 테이블 매트릭스 중 2번으로 표시된 값은 각 value의 합이 아닙니다. 2번 표시된 값은 필터 컨텍스트를 적용하지 않았을 때의 측정값입니다.
  • 참고로 각 측정값은 리포트 안에서 독립적으로 각 필터 컨텍스트에 의하여 계산됩니다.

 

행 컨텍스트

행 컨텍스트는 반복 함수 또는 계산된 열이 수식을 평가하는 각 단계마다 계산하는 행을 인식하는 능력을 말합니다.

FILTER나 SUMX와 같은 함수 및 계산된 열에는 행 컨텍스트가 있습니다. 행 컨텍스트는 한 번에 한 행씩 테이블을 반복해서 단일 값을 선택한 후 그 단일 값에 작용한다고 이해하면 됩니다. 보통의 측정값에는 해당이 되지 않으며 행 컨텍스트를 가진 함수와 계산된 열에 해당되는 기능입니다.

 

Total Sales = SUMX(‘Sales’, ‘Sales’[ExtendedAmount] + ‘Sales’[TaxAmount]) 식으로 반복 함수 SUMX()의 동작 프로세스를 살펴보겠습니다. 먼저 ‘Sales’ 테이블 위에 행 컨텍스트를 만듭니다. 각 행에서 ‘Sales’[ExtendedAmount] 열과 현재 행의 교차점인 단일 값을 가져와서 ‘Sales’[TaxAmount] 열과 현재 행의 교차점인 단일 값에 더합니다. 다음으로 테이블을 한 번에 한 행씩 반복합니다. 테이블의 각 행에 반복 작업을 수행 후 모든 값을 더합니다. 반복 함수는 모든 중간값을 저장하지 않고 최종 결과를 보고서의 시각 개체에 값으로 반환합니다.

 

계산된 열의 동작 프로세스는 계산된 열은 반복 프로세스의 각 행에서 계산된 값을 열 자체에 저장하는 특징이 있습니다.

 

행 컨텍스트에서 주의할 점은 행 콘텍스트 필터 컨텍스트를 자동으로 생성하지 않습니다. 따라서 계산된 열에서는 행 컨텍스트를 CALCULATE() 함수로 감싸야 필터 컨텍스트가 적용됩니다.

 

정리 소감

Power BI DAX 공부를 하면서 엑셀과 다른 개념인 필터 컨텍스트와 행 컨텍스트 개념이 생소했고 처음에는 이해하기가 쉽지 않았습니다. 하지만 DAX를 제대로 사용하기 위해서는 두 컨텍스트의 개념을 확실히 이해해야 한다고 느꼈고 여러 번 반복해서 공부하면서 이해하게 되었습니다. 이 글을 읽으시는 분들께서도 필터 컨텍스트와 행 컨텍스트의 개념을 이해하여 DAX 정복의 다음 단계로 나아가셨으면 좋겠습니다.

반응형

댓글