ApparelSales라는 의류 판매 테이블에서 마지막 날짜의 Slacks의 판매량을 조회하고 싶다면 어떻게 해야할까?

 

DB SQL의 경우는 아래와 같이 조회할 수 있다.

SELECT SUM(Slacks)
FROM ApparelSales
WHERE 1=1
AND Datekey IN (SELECT MAX(Datekey) FROM ApparelSales)

SELECT SUM(Slacks)
FROM ApparelSales
WHERE 1=1
AND Datekey = (SELECT MAX(Datekey) FROM ApparelSales)

 

Power BI에서 이런 WHERE Condition을 어떻게 줄 수 있을까?

아래와 같이 CALCULATE와 FILTER를 사용하면 된다.

최근 합계 = CALCULATE(SUM(ApparelSales[Slacks]), FILTER(ApparelSales, MAX(ApparelSales[Datekey])))

설명 : 

CALCULATE의 expression에 WHERE절을 제외한 SQL을 넣고, 그 뒤 filter에 WHERE 조건들을 넣으면 된다.

CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])

FILTER는 아래와 같이 테이블에 조건을 걸어준다.

FILTER(<table>,<filter>)

 

즉... SQL에서는 서브쿼리에 원하는 값을 조회시키고, 그 값을 WHERE절에 조건을 걸어 조회를 했는데, Power BI에서는 FILTER에 원하는 조건만 담긴 테이블을 생성하고, CALCULATE를 통해 그 테이블 내에서 수식을 수행한다. 즉... SQL의 WITH AS와 비슷한 방식이라 볼 수 있다.

+ Recent posts