DAX関数で条件付きカウント(COUNT/CALCULATE関数)

COUNT関数 COUNTIFS CALCULATE関数 FILTERDAX関数
スポンサーリンク

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:列を指定
 数値、文字列、日付などをカウント
 ※空白の数はカウントしません

参考:Microsoft Docs COUNT関数

【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関数で一つの条件を満たすものをカウント

まずは、購入者が女性である数のカウントをメジャーで追加します。

「新しいメジャー」をクリックしメジャーを追加

PowerBI メジャー追加

メジャー名:購入者(女性)
関数:CALCULATE関数、COUNT関数
CALCULATE(式,フィルター①,フィルター②,…)

CALCULATE関数の式の部分にCOUNT関数を入れ込めばOKです。
つまり、
=CALCULATE(COUNT(数えたい列),条件フィルター式)

実際に書くと、
購入者(女性) = CALCULATE(COUNT(‘購入リスト'[製品]),’購入リスト'[性別]=”女性”)

CALCULATE関数 COUNT関数 カウント 条件

これで、購入者が女性である数のカウントをメジャーで追加できました!
レポート画面でカードを追加して、追加したメジャーの値を確認してみると、9名となりあってることを確認できました!

CALCULATE関数 COUNT関数 カウント

Excelでいうところの、COUNTIF関数と同じことをDAX関数でできました!
CALCULATE関数を使えば、SUMIF、AVERAGEIF関数といった内容も式の部分を変えるだけで簡単にできます!

◆関連記事
▶「メジャー」「新しい列」を使ったデータ加工方法
▶CALCULATE関数で条件付きの合計や平均(DAX関数)
▶メジャーで平均値の追加(AVERAGE/AVERAGEX関数)
▶PowerBIでパレート図の作成

CALCULATE関数で複数条件を満たすものをカウント

次に、購入者が女性かつ、地域が関東である数のカウントをメジャーで追加していきます。

CALCULATE(式,フィルター①,フィルター②,…)
複数条件を設定する場合は、CALCULATE関数のフィルター①、②と増やして追加するだけです!

例えば今回は、先ほどの式に地域=関東の条件を追加すればOKです。

購入者(女性+関東) = CALCULATE(COUNT(‘購入リスト'[製品]),’購入リスト'[性別]=”女性”,’購入リスト'[地域]=”関東”)

PowerBI COUNTIF 複数条件 CALCULATE関数

これで、購入者が女性かつ、地域が関東である数のカウントをメジャーで追加できました!
同様にレポート画面のカードで、追加したメジャーの値を確認してみます。6名となっています!

CALCULATE関数 COUNT関数 複数条件 カウント

これで、Excelでいうところの、COUNTIFS関数と同じこともDAX関数でできました!
CALCULATE関数を使えば、SUMIFS、AVERAGEIFS関数といった複数条件の合計、平均も簡単にできます!

スポンサーリンク

FILTER関数で条件を満たすカウント

DAX関数でCOUNTIF的なことをする方法②は
「COUNTROWS関数」+「FILTER関数」を使うパターンです。

FILTER関数でデータテーブルを抽出し、その行をカウントするイメージです。

FILTER関数で一つの条件を満たすものをカウント

さっきと同様に購入者が女性である数のカウントをメジャーで追加します。
「新しいメジャー」をクリック。

PowerBI メジャー追加

メジャー名:購入者(女性)2
関数:COUNTROWS関数、FILTER関数
COUNTROWS(テーブル)
・FILTER(テーブル,フィルター)

COUNTROWS関数の中にFILTER関数でフィルターをかけたテーブルを入れ込む!
つまり、
= COUNTROWS(FILTER(テーブル,フィルター式))
を作ればOKです。

購入者(女性)2 = COUNTROWS(FILTER(‘購入リスト’,’購入リスト'[性別]=”女性”))

COUNTROWS COUNTIF DAX関数 FILTER関数

これで、購入者が女性である数のカウントをメジャーで追加できました!
先ほどと同様にレポート画面でカードを追加して値を確認すると、今回追加した「購入者(女性)2」が先ほど、CALCULATE関数で追加したカウントと同じ9人になっていますね!

PowerBI COUNTIF DAX関数 FILTER関数

Excelでいうところの、COUNTIF関数と同じことをDAX関数でできました!
FILTER関数を使って、データをフィルタリング(抽出)してカウントさせる方法と覚えておきましょう!

スポンサーリンク

FILTER関数で複数条件を満たすものをカウント

FILTER関数を用いた複数条件を設定していきます。先ほどと同様に、購入者が女性かつ、地域が関東である数のカウントをメジャーで追加していきます。

FILTER(テーブル,フィルター)

フィルターのところに下記の設定で複数条件を追加していくだけです。

【複数条件の設定方法】

・AND関数、&&
→すべての条件を満たす(○○かつ○○)
・OR関数
→一つでも条件を満たす(○○または○○)
・NOT関数

→その条件を満たしてない(○○以外、○○ではない)

例えば、性別=女性 かつ 地域=関東の複数条件を設定したいので、今回はAND関数を用いて、
=COUNTROWS(FILTER(テーブル,AND(条件①,条件②)))
と設定すればOKです。

実際に書くと、
購入者(女性+関東)2 = COUNTROWS(FILTER(‘購入リスト’,AND(‘購入リスト'[性別]=”女性”,’購入リスト'[地域]=”関東”)))

FILTER関数 複数条件 COUNTIF COUNTROWS関数 DAX PowerBI

これで、購入者が女性かつ、地域が関東である数のカウントを追加できました!レポート画面のカードで、確認して「購入者(女性+関東)2」も同様の値になってますね!

COUNTIFS関数 DAX関数 FILTER COUNTROWS

これで、FILTER関数を用いても、COUNTIFS関数と同じことを実現できました。条件の設定も簡単なので、ぜひご参考下さい!

スポンサーリンク

COUNT系関数の種類/まとめ

今回は通常のCOUNT関数と行をカウントするCOUNTROWS関数を用いました。COUNT系の関数は全てで8種類あり、各特徴は下記です。

No.関数説明
1CountCount(列)
数値、文字列、日付などをカウント
空白の数はカウントしない
2CountACountA(列)
Count Allの略
PowerBIではCount関数とほぼ変わらない
3CountXCountX(テーブル,式)
第一引数がテーブルなので、
FILTER関数と組み合わせできる
4CountAXCountAX(テーブル,式)
CountAとCountXが合体したもの
5CountRowsCountRows(テーブル)
テーブルの行数をカウント
空白の数もカウントされる
6CountBlankCountBlank(列)
列の空白の数をカウント
7DistinctCountDistinctCount(列)
重複した値を加算せず(Distinct)にカウント
8DistinctCountNoBlankDistinctCountNoBlank(列)
空白を無視(NoBlank)して
重複した値を加算せず(Distinct)してカウント

使う可能性があるのは、No.1、5、6、7ですが、ほぼ使うのは今回紹介した、基本のCOUNT関数、COUNTROWS関数です。COUNTBLANK関数は空白行を数えたい時、DISTINCTCOUNT関数は、重複させずに数えたい時に便利です!

スポンサーリンク

PowerBI DAX関数まとめ

下記でPowerBIのDAX関数を色々とまとめています。
ぜひご参考下さい!

【PowerBI】便利機能9選と学習方法

よく使うDAX関数まとめ

DAX関数は、Excelと似ているようで微妙に違います…
今回のCALCULATE関数やFILTER関数を組み合わせれば、Excelでよく使うCOUNTIF、SUMIF、AVERAGEIF関数などと同様のことができるようになり、非常に便利です!

IT資格の人気オンラインコース

最後まで読んでいただきありがとうございます!

記事が良ければ☟クリック応援よろしくお願いします!!

にほんブログ村 サラリーマン日記ブログへ
にほんブログ村

コメント

  1. 井上 より:

    いつも助かっています。
    よろしくお願い致します。

タイトルとURLをコピーしました