본문 바로가기
POWER BI

[POWER BI/파워비아이] TREATAS - 데이터 모델 필터링하기 - Relationship 없이도 가능!

by 하니in독일 2024. 11. 19.
반응형

 

많은 테이블과 데이터를 다루다 보면, 각 테이블 간 구조가 다를 때가 있습니다. 물론, POWER BI에서 Relationship을 이용해 연결을 할 수도 있지만, 원하는 대로 되지 않을 때가 있죠. 만약, 테이블 간의 relationship이 없다면 우리는 필터를 사용할 수 없는 것일까요? 그렇지 않습니다! 바로 이때, 우리가 필요한 것이 TREATAS입니다. :) 

 

오늘은 TREATAS 기능에 대해 알아보는 시간을 가지도록 해 볼게요 :) 


TREATAS? 

두 테이블 간의 관계를 연결할 수 없지만, 마치가 관계가 있는 것처럼 필터를 적용해 필터를 분석할 수 있게 해 주는 기능! 보통 데이터가 복잡하게 얽혀 있을 때 사용할 수 있습니다. 

 

주의해야 할 점: 이미 관계가 형성되어 있거나, 관계 형성이 가능하다면, 굳이 사용하지 않아도 좋습니다 

 

 이 계산은 계산열 혹은 계산값 둘 다에 사용할 수 있으며, 포맷은 다음과 같습니다. 

TREATAS(table_expression, <column>[, <column>[, <column>[,…]]]} )

 

좀 더 쉽게 알아보기 위해 예시를 들어 설명해 볼게요! 


 

예를 들어 지역 테이블과 판매 테이블에 관계가 없는데도, 특정 고객 그룹의 판매량을 보고 싶을 때 사용할 수 있습니다. 

 

1. 판매 테이블

판매 ID 판매액 지역명
1 500 서울
2 300 부산
3 200 대구
4 100 서울
5 400 부산

 

2. 지역 테이블

지역 ID 지역명 지역 코드
101 서울 01
102 부산 02
103 대구 03
104 인천 04

 

현재 이 두 테이블 간에 어떠한 관계도 없다고 가정을 하면, 우리는 쉽게 지역 매출의 총계를 구할 수 있습니다. 

 

서울_지역_매출 = 
CALCULATE(SUM(판매[판매액]), 
TREATAS(VALUES(지역[지역명]), 
		판매[지역명]
    )
)

 

이렇게 하면, 서울 지역에 대한 판매량을 계산할 수 있습니다 :)! 


실제로 저는 한 테이블에는 딜러 별 판매량이 있고, 다른 한 테이블에는 지역 및 딜러별 목표치가 있었습니다. 

 

1. 판매 테이블

딜러명 판매량
A 100
B 300
C 200
D 500

 

2. 목표 테이블

지역명 딜러명 목표치
서울   1200
부산 A 350
서울 B 600
서울 C 250
대구 D 450

이런 식으로 구성되어 있어서, 지역을 선택할 때에는 목표치 1200이 딜러를 선택할 때에는 딜러 별 목표치가 나왔어야 했어요. 바로 이 때 저는 TREATAS를 사용하였습니다. 

 

달성_비율 = 
CALCULATE(
    SUM(판매[판매량]),
    TREATAS(
        VALUES(목표[딜러명]),
        판매[딜러명]
    )
) / 
CALCULATE(
    IF(
        ISBLANK(VALUES(목표[딜러명])),
        SUM(목표[목표치]),  // 딜러가 비어 있으면 지역별 목표치 사용
        SUMX(
            FILTER(목표, 목표[딜러명] = 판매[딜러명]),
            목표[목표치]
        )  // 딜러별 목표치를 사용
    ),
    TREATAS(
        VALUES(목표[지역명]),
        판매[지역명]
    )
)

 

즉, 딜러를 선택하면 각 딜러 별 목표치를 보여주고, 지역을 선택하면 지역 별 목표치를 보여줍니다. 굳이 관계 설정을 하지 않아도 이렇게 복잡한 계산을 해결할 수 있는 것이지요!


오늘은  POWER BI의 고급 기능 중 하나인 TREATAS에 대해 배워보았습니다 :) 이 기능으로 좀 더 다이내믹한 POWER BI 리포트를 만들 수 있기를 바라요! 

 

https://www.tistory.com/event/write-challenge-2024

 

작심삼주 오블완 챌린지

오늘 블로그 완료! 21일 동안 매일 블로그에 글 쓰고 글력을 키워보세요.

www.tistory.com

 

반응형