PowerBIでExcelのCOUNTIF関数やCOUNTIFS関数にあたる条件を満たした場合のカウント方法を紹介します。DAX関数はExcel関数とは異なり、COUNTIFやCOUNTIFS関数がありません。
CALCULATE関数やFILTER関数と
COUNT関数を組み合わせれば、
DAX関数でも条件付きのカウントが可能です。
SUMIFS、AVERAGEIFなどの条件付きの合計や平均などにも応用できるので、ぜひご参考下さい!
・条件を満たしたカウント(CALCULATE/COUNT関数)
・複数条件を満たしたカウント
・8種類のCOUNT関数系まとめ
を紹介します。
PowerBIを学習する上で私が一番役に立ったのはUdemyでの動画学習です。動画学習なので圧倒的に学べる情報量が違い、動画と一緒に使いながら学べるのでスピーディーに学習できました!
【☟Udemyページ】
https://www.udemy.com/ja/
本なら下記がサンプルが多く検索用として重宝しています。ただ、初心者向けですので、ある程度使える方は買わなくてよいかと思います。
DAX関数で条件付きのカウント方法は2パターン
PowerBIで条件を満たしたカウントをするためには、
①「COUNT関数」+「CALCULATE関数」
②「COUNTROWS関数」+「FILTER関数」
の2パターンが一般的です。
【COUNT関数】構文
=COUNT(<column>)
・column:列を指定
数値、文字列、日付などをカウント
※空白の数はカウントしません
【CALCULATE関数】構文
=CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])
つまり、
= CALCULATE(式,フィルター①,フィルター②,…)
とフィルター箇所に複数条件を追加して計算させる関数
関連記事:CALCULATE関数の使い方、条件付きの計算方法
参考:Microsoft Docs CALCULATE関数
【COUNTROWS関数】構文
=COUNTROWS([<table>])
つまり、
=COUNTROWS(テーブル)で
データテーブルの行数をカウント
関連記事:重複を削除した行数のカウント(COUNTROWS関数)
参考:Microsoft Docs COUNTROWS関数
【FILTER関数】構文
=FILTER(<table>,<filter>)
つまり
=FILTER(テーブル,フィルター)
指定したデータテーブルをフィルターさせる関数
関連記事:FILTER関数の使い方、テーブルをフィルターし計算
参考:Microsoft Docs FILTER関数
それでは、これらを組み合わせて条件を満たした数をカウントする方法を具体的に説明していきます!
CALCULATE関数で条件を満たすカウント
DAX関数でCOUNTIF的なことをする方法①は
「COUNT関数」+「CALCULATE関数」を使うパターンです。
CALCULATE関数で囲むだけなので非常に簡単です。
PowerBIに下記の購入リストを取り込んでいる状態とします。
☟購入者リストの生データ
製品名、性別、購入地域、年齢、購入金額がのっているリストです。
CALCULATE関数で一つの条件を満たすものをカウント
まずは、購入者が女性である数のカウントをメジャーで追加します。
「新しいメジャー」をクリックしメジャーを追加
メジャー名:購入者(女性)
関数:CALCULATE関数、COUNT関数
=CALCULATE(式,フィルター①,フィルター②,…)
CALCULATE関数の式の部分にCOUNT関数を入れ込めばOKです。
つまり、
=CALCULATE(COUNT(数えたい列),条件フィルター式)
実際に書くと、
購入者(女性) = CALCULATE(COUNT(‘購入リスト'[製品]),’購入リスト'[性別]=”女性”)
これで、購入者が女性である数のカウントをメジャーで追加できました!
レポート画面でカードを追加して、追加したメジャーの値を確認してみると、9名となりあってることを確認できました!
Excelでいうところの、COUNTIF関数と同じことをDAX関数でできました!
CALCULATE関数を使えば、SUMIF、AVERAGEIF関数といった内容も式の部分を変えるだけで簡単にできます!
◆関連記事
▶「メジャー」「新しい列」を使ったデータ加工方法
▶CALCULATE関数で条件付きの合計や平均(DAX関数)
▶メジャーで平均値の追加(AVERAGE/AVERAGEX関数)
▶PowerBIでパレート図の作成
CALCULATE関数で複数条件を満たすものをカウント
次に、購入者が女性かつ、地域が関東である数のカウントをメジャーで追加していきます。
=CALCULATE(式,フィルター①,フィルター②,…)
複数条件を設定する場合は、CALCULATE関数のフィルター①、②と増やして追加するだけです!
例えば今回は、先ほどの式に地域=関東の条件を追加すればOKです。
購入者(女性+関東) = CALCULATE(COUNT(‘購入リスト'[製品]),’購入リスト'[性別]=”女性”,’購入リスト'[地域]=”関東”)
これで、購入者が女性かつ、地域が関東である数のカウントをメジャーで追加できました!
同様にレポート画面のカードで、追加したメジャーの値を確認してみます。6名となっています!
これで、Excelでいうところの、COUNTIFS関数と同じこともDAX関数でできました!
CALCULATE関数を使えば、SUMIFS、AVERAGEIFS関数といった複数条件の合計、平均も簡単にできます!
FILTER関数で条件を満たすカウント
DAX関数でCOUNTIF的なことをする方法②は
「COUNTROWS関数」+「FILTER関数」を使うパターンです。
FILTER関数でデータテーブルを抽出し、その行をカウントするイメージです。
FILTER関数で一つの条件を満たすものをカウント
さっきと同様に購入者が女性である数のカウントをメジャーで追加します。
「新しいメジャー」をクリック。
メジャー名:購入者(女性)2
関数:COUNTROWS関数、FILTER関数
・COUNTROWS(テーブル)
・FILTER(テーブル,フィルター)
COUNTROWS関数の中にFILTER関数でフィルターをかけたテーブルを入れ込む!
つまり、
= COUNTROWS(FILTER(テーブル,フィルター式))
を作ればOKです。
購入者(女性)2 = COUNTROWS(FILTER(‘購入リスト’,’購入リスト'[性別]=”女性”))
これで、購入者が女性である数のカウントをメジャーで追加できました!
先ほどと同様にレポート画面でカードを追加して値を確認すると、今回追加した「購入者(女性)2」が先ほど、CALCULATE関数で追加したカウントと同じ9人になっていますね!
Excelでいうところの、COUNTIF関数と同じことをDAX関数でできました!
FILTER関数を使って、データをフィルタリング(抽出)してカウントさせる方法と覚えておきましょう!
FILTER関数で複数条件を満たすものをカウント
FILTER関数を用いた複数条件を設定していきます。先ほどと同様に、購入者が女性かつ、地域が関東である数のカウントをメジャーで追加していきます。
=FILTER(テーブル,フィルター)
フィルターのところに下記の設定で複数条件を追加していくだけです。
【複数条件の設定方法】
・AND関数、&&
→すべての条件を満たす(○○かつ○○)
・OR関数
→一つでも条件を満たす(○○または○○)
・NOT関数
→その条件を満たしてない(○○以外、○○ではない)
例えば、性別=女性 かつ 地域=関東の複数条件を設定したいので、今回はAND関数を用いて、
=COUNTROWS(FILTER(テーブル,AND(条件①,条件②)))
と設定すればOKです。
実際に書くと、
購入者(女性+関東)2 = COUNTROWS(FILTER(‘購入リスト’,AND(‘購入リスト'[性別]=”女性”,’購入リスト'[地域]=”関東”)))
これで、購入者が女性かつ、地域が関東である数のカウントを追加できました!レポート画面のカードで、確認して「購入者(女性+関東)2」も同様の値になってますね!
これで、FILTER関数を用いても、COUNTIFS関数と同じことを実現できました。条件の設定も簡単なので、ぜひご参考下さい!
COUNT系関数の種類/まとめ
今回は通常のCOUNT関数と行をカウントするCOUNTROWS関数を用いました。COUNT系の関数は全てで8種類あり、各特徴は下記です。
No. | 関数 | 説明 |
1 | Count | Count(列) 数値、文字列、日付などをカウント 空白の数はカウントしない |
2 | CountA | CountA(列) Count Allの略 PowerBIではCount関数とほぼ変わらない |
3 | CountX | CountX(テーブル,式) 第一引数がテーブルなので、 FILTER関数と組み合わせできる |
4 | CountAX | CountAX(テーブル,式) CountAとCountXが合体したもの |
5 | CountRows | CountRows(テーブル) テーブルの行数をカウント 空白の数もカウントされる |
6 | CountBlank | CountBlank(列) 列の空白の数をカウント |
7 | DistinctCount | DistinctCount(列) 重複した値を加算せず(Distinct)にカウント |
8 | DistinctCountNoBlank | DistinctCountNoBlank(列) 空白を無視(NoBlank)して 重複した値を加算せず(Distinct)してカウント |
使う可能性があるのは、No.1、5、6、7ですが、ほぼ使うのは今回紹介した、基本のCOUNT関数、COUNTROWS関数です。COUNTBLANK関数は空白行を数えたい時、DISTINCTCOUNT関数は、重複させずに数えたい時に便利です!
PowerBI DAX関数まとめ
下記でPowerBIのDAX関数を色々とまとめています。
ぜひご参考下さい!
DAX関数は、Excelと似ているようで微妙に違います…
今回のCALCULATE関数やFILTER関数を組み合わせれば、Excelでよく使うCOUNTIF、SUMIF、AVERAGEIF関数などと同様のことができるようになり、非常に便利です!
最後まで読んでいただきありがとうございます!
記事が良ければ☟クリック応援よろしくお願いします!!
コメント
いつも助かっています。
よろしくお願い致します。
ご連絡ありがとうございます。メールしております。