DAX에서 SUMIF함수는 존재하지 않습니다.

사실 보고서에서 슬라이서로 클릭만 하면 원하는 결과를 보여주기 때문에 딱히 필요가 없는 함수 일지 모릅니다.

아래와 같은 쿼리가 있다고 가정을 하겠습니다.

여기서 Zone A만의 합계를 구한다고 생각을 하면 엑셀에서는 SUMIF를 사용해서 A의 합계만 계산할 수 있습니다.

하지만 아래와 같이 Power BI에서는 슬라이서를 이용하면 간단히 해결이 될 수 있기 때문에 크게 문제가 되지 않았던 함수였는것 같습니다.

 

위에 보여지는 슬라이서에서 A를 클릭하면 딱히 수식을 이용하지 않더라도 Zone A의 합계가 자동 계산이 되어 카드로 표시가 되고, 1F를 선택하게 되면 자동으로 1F의 합계를 보여주게 되죠.

하지만 어떤 경우는 슬라이서를 사용하지 않고 계산을 해야하는 경우가 생길 수도 있죠.

이럴 때는 계산을 해야 하는데 DAX에서는 SUMIF함수가 존재하지 않는다라는 이야기는 처음에 했습니다.

DAX에서는 CALCULATE함수를 이용하면 해결이 가능합니다.

712는 Process의 합을 보여주고, 아래에 149는 CALCULATE함수를 이용해 Zone A만의 합산을 구한 것입니다.

간단히 정리를 하자면 FILTER함수로 Wall 쿼리의 Zone이라는 열에서 "A"만 추출한 Wall 쿼리의 Process열의 합산을 구하라는 식이 되겠습니다.

그럼 조금 전에 슬라이서로 A를 선택했을 때와 똑같은 값은 보여줍니다.

 

그리고 FILTER는 여러 번 반복해서 사용이 될 수 있습니다.

만약 1F에 있는 Zone A의 합계만 보고 싶다면 아래와 같이 필터를 하나 더 추가하면 됩니다.

SUMIFS = CALCULATE(SUM(Wall[Process]),FILTER(WALL,WALL[Zone]="A"),FILTER(Wall,Wall[Floor]="1F"))

그럼 엑셀에서 SUMIFS와 같은 수식이 만들어집니다.

간단히 DAX에서 SUMIF를 계산할 수 있는 CALCULATE함수에 대해 알아보았습니다.

CALCULATE내에는 꼭 SUM이 아니라 다른 함수도 쓰일 수 있기에 여러 함수를 이용해서 수식을 만들어 보는 것도 재미있는 일이라 생각합니다.

+ Recent posts