저번 글에서 DAX에는 SUMIF함수가 없다고 말씀을 드렸습니다.
마찬가지로 COUNTIF함수도 존재를 하지 않습니다.
하지만 다른 함수들을 이용해 COUNTIF함수와 똑같은 기능을 가지도록 만들 수 있습니다.
아래는 Material이라는 이름을 가진 쿼리이며 각 층별, 타일의 형태별 개수를 보여줍니다.
먼저 COUNT 함수를 사용한다면 행의 개수를 반환하므로 15가 나와야겠죠?
FLOOR열을 기준으로 COUNT함수를 이용해 행의 개수를 구하겠습니다.
Material 쿼리에 있는 [Floor]열의 개수를 반환하라는 함수입니다.
그럼 이제 엑셀에서 자주 쓰는 COUNTIF와 똑같은 역할을 하는 함수를 이용할 건데요.
예전에는 CALCULATE 함수 안에 FILTER를 이용해 구했었는데, COUNTX라는 함수를 알게 된 뒤로는 COUNTX만 사용하고 있습니다.
COUNTX는 함수 안에 FILTER를 삽입하여 조건을 만들어줄 수 있습니다.
여기서도 Material 쿼리 내에 있는 [Floor]열의 개수를 구하지만, FILTER를 삽입해 Materila 쿼리의 [Tile]이라는 열에서 "Type A"에 해당되는 행만 카운트하라는 함수가 되겠습니다.
그럼 1층에 Type A 만 카운트하려면 어떻게 해야 할까요?
필터가 2개가 필요하겠죠
여기서는 AND를 이용하면 되는데 간단히 &&를 삽입하는 것 만으로 해결이 될 수 있습니다.
편의상 이름을 COUNTXs라고 하겠습니다.
Material[Tile]="Type A" && Material[Floor]="1st"
FILTER 중간에 이렇게 &&를 넣어주면 AND라는 연산자처럼 사용할 수 있으며 [Tile] 열의 "Type A"와 [Floor] 열의 "1st" 에 해당되는 행만 카운트하라는 의미가 되면 결과는 당연히 1이 되겠죠
마지막으로 제가 COUNTX라는 함수를 알기 전에 주로 사용하던 함수를 사용하겠습니다.
결과는 COUNTX를 사용할 때와 똑같습니다.
똑같이 필터를 사용했으며 다른 것 하나는 CALCULATE 함수 안에 COUNTROWS를 사용한 것이죠
COUNTROWS는 쿼리 안의 모든 행의 개수를 카운트하는 것이고, 여기에 FILTER를 이용하면 똑같은 결과를 얻을 수 있습니다.
행의 개수를 알려주는 COUNT함수에 대해 알아봤는데, 목적지로 운전을 해서 갈 때 여러 가지의 길이 있듯이 똑같은 결과치를 보여주더라도 함수의 사용에 따라 여러가지의 수식이 존재합니다.
딱히 정답이 있는 건 아니므로 각자가 편한 방법을 사용하면 좋을 것이라 생각합니다.
하지만 이전의 글과 같이 파워 비아이는 슬라이서를 이용해 필터링 작업을 하는 경우가 많아서 특별한 경우를 제외하고는 그렇게 많이 사용하지 않았던 것 같습니다.
하지만 만일 뭔가를 콕 집어서 보여줘야 할 필요가 있다면 알아두면 유용한 수식이 될 거라 생각합니다.
'DAX > DAX' 카테고리의 다른 글
DAX에서 VLOOKUP 함수 만들기 (2) - LOOKUPVALUE보다 편한 RELATED (1) | 2021.03.27 |
---|---|
DAX에서 VLOOKUP 함수의 사용 (0) | 2021.03.27 |
DAX에서 SUMIF 함수 만들어 사용하기 (3) | 2021.03.27 |
DAX에서 IF 함수의 사용 (0) | 2021.03.27 |
SUM과 SUMX의 차이점을 알아보자 (0) | 2021.03.27 |