Power BIで「特定の値」をカウントする方法
Power BIを使ってデータを分析するとき、「特定の値を持つ行が何件あるのか知りたい」「特定の条件を満たすレコード数をカウントしたい」といったニーズは非常に多いです。たとえば、売上テーブルの中で「商品A」の購入が何件あったのか、顧客データの中から「契約ステータス=有効」の件数がどのくらいあるのかなど、データの状況把握にカウント系の数値は欠かせません。
本記事では、Power BI(特にDAX)を用いて「特定の値」をカウントする方法をわかりやすく解説します。
1. 基本の考え方:COUNT系関数とCALCULATEの組み合わせ
Power BIでは、DAX(Data Analysis Expressions)という数式言語を使ってメジャー(Measure)を作成することで、動的な集計やカウントを行います。
-
COUNT: 文字列や数値を含む列の非BLANK値をカウント。
-
COUNTROWS: テーブルの行数をカウント。
-
DISTINCTCOUNT: 列のユニークな値の数をカウント。
一方、CALCULATE関数は“集計にフィルター条件をかける”ときに使います。
CALCULATE(<集計関数>, <フィルター条件1>, <フィルター条件2>, ...)
たとえば、テーブル全体から特定の商品に関する行数だけを数える、といったときに利用します。
2. 最もシンプルな例:列に対する条件付きカウント
2-1. COUNTROWS + CALCULATEでの例
シナリオ
テーブル名「Sales」、列名「ProductName」には商品名が入っているとします。その中で、商品名が「Product A」の行だけをカウントしたい場合。
DAXの例
CountOfProductA =
CALCULATE(
COUNTROWS(Sales),
Sales[ProductName] = "Product A"
)
このメジャーを作成すると、ビジュアル上で「CountOfProductA」を参照した際に「Product A」の行のみをカウントした値が表示されます。
-
COUNTROWS(Sales):Salesテーブルの総行数。
-
Sales[ProductName] = “Product A”:CALCULATEに指定するフィルター条件。これによって「ProductName」が”Product A”の行だけが抽出され、COUNTROWSの結果もその数だけに限定されます。
2-2. COUNT + CALCULATEでの例
COUNTROWSは“行数”を数えますが、COUNTは“列における非空白の値の件数”を数えます。以下のように、対象列を指定する場合もあります。
CountOfProductA_Alt =
CALCULATE(
COUNT(Sales[ProductName]),
Sales[ProductName] = "Product A"
)
こちらも同じように「ProductName」が”Product A”の行だけをフィルターしたうえで、ProductName列の非BLANK値をカウントしています。厳密にはCOUNTの場合、列がBLANK(空)のレコードがあれば除外される点に注意が必要です。
3. 複数条件がある場合
複数の条件でカウントしたいときは、CALCULATE関数に複数のフィルターを指定します。
シナリオ
-
「Sales」テーブル
-
「ProductName」が”Product A” かつ 「Region」が”East” の件数だけ数えたい
DAXの例
CountOfProductA_East =
CALCULATE(
COUNTROWS(Sales),
Sales[ProductName] = "Product A",
Sales[Region] = "East"
)
ここでは、同時に2つのフィルターがかかり「ProductName = ‘Product A’ AND Region = ‘East’」を満たすデータ行数が返されます。
4. DISTINCTCOUNTを使う場合
同じ商品名のレコードが複数ある場合、「ユニークな商品名が何種類あるか」などを知りたいケースもあります。そのときはDISTINCTCOUNTを利用すると便利です。
シナリオ
-
「Sales」テーブル
-
「Category」列には製品カテゴリが入っている
-
全売上のうち「ユニークなカテゴリの数」を取得したい
DAXの例
DistinctCategoryCount =
DISTINCTCOUNT(Sales[Category])
これで、Salesテーブルの中に存在する重複を除いた「Category」の種類数をカウントします。
フィルターを組み合わせる場合
「特定の値」のユニーク数を知りたい場合は、CALCULATEと組み合わせられます。
DistinctCategoryOfProductA =
CALCULATE(
DISTINCTCOUNT(Sales[Category]),
Sales[ProductName] = "Product A"
)
5. 条件によって0を返したい場合の工夫
DAXのカウント系関数では、フィルター結果が0件になるとBLANKになる場合があります。
ビジュアル上で明確に「0」と表示したい場合は、COALESCE関数やIF関数を組み合わせることで回避できます。
CountOfProductA_ZeroIfNone =
COALESCE(
CALCULATE(
COUNTROWS(Sales),
Sales[ProductName] = "Product A"
),
0
)
COALESCE(式, 0)
は、式の結果がBLANKまたはNULLの場合に0を返すようにします。
こうすることで「特定の値を持つ行が存在しないとき」でも、空白ではなく明示的に0を表示させられます。
6. カラムを追加してカウントを表示する方法
メジャーではなく列を追加してレコード単位でフラグを持たせる方法もあります。例えば、
-
ProductNameが”Product A”なら1
-
それ以外は0
のような計算列(Calculated Column)を作成し、その合計をメジャーで算出する方法です。
計算列の例
IsProductA =
IF(
Sales[ProductName] = "Product A",
1,
0
)
メジャーの例
CountProductA =
SUM(Sales[IsProductA])
計算列IsProductA
が1のレコードを合計すれば、”Product A”の行数になります。ただし、計算列は行数が多い巨大テーブルの場合、モデル容量が増えるなどパフォーマンスの面で注意が必要です。
推奨: まずはCALCULATE + カウント関数でメジャーを作る方が柔軟です。
7. クイックメジャー(Quick Measures)を活用する方法
DAXがあまり得意ではない方は、Power BIの「クイックメジャー」機能も検討してみましょう。
-
レポートビューで右クリック → [新しいクイック メジャー]
-
数式の種類から「フィルターされた値の合計」や「条件に基づく計算」を選択
-
対象列やフィルターの条件をGUIで指定
これにより、自動的にDAX式が生成されます。DAXを自力で書かなくても、簡易的に特定条件のカウント(や合計、平均など)が作成できます。ただし、複雑な条件がある場合は自分でDAXを組んだほうがスムーズなこともあります。
8. よくあるトラブルシューティング
8-1. 欲しい値ではなく合計行数が常に表示される
-
原因: CALCULATEで条件を設定していない、あるいはフィルターの書き方を誤っているケースが多い
-
対策:
Sales[Column] = "Value"
のように明示的な条件をCALCULATE関数内に書くこと。
8-2. BLANKになってしまう
-
原因: フィルターをかけた結果、該当レコードがない
-
対策:
COALESCE( <式>, 0 )
で0を返すようにする。またはIF文でBLANKを置き換える。
8-3. フィルターが他のビジュアルにも影響して意図しない数値になる
-
原因: Power BIのフィルターコンテキストが絡み合っている
-
対策: 必要に応じて
ALL()
やALLEXCEPT()
などのDAX関数でフィルターコンテキストをコントロールする。
9. まとめ
Power BIで「特定の値をカウント」したいときは、DAXの基本であるCALCULATE
とカウント系関数(COUNTROWS
, COUNT
, DISTINCTCOUNT
など)を組み合わせるのが王道です。必要に応じて複数の条件を付与したり、結果がBLANKにならないように工夫したりすることで、分析レポートを充実させられます。
-
シンプルな例:
CALCULATE(COUNTROWS(Table), Table[列] = "値")
-
複数条件:
CALCULATE(COUNTROWS(Table), Table[列1] = "値1", Table[列2] = "値2")
-
Distinctなカウント:
CALCULATE(DISTINCTCOUNT(Table[列]), <条件>)
-
BLANK対策:
COALESCE( CALCULATE(...), 0 )
ぜひこれらのポイントを参考に、Power BIでのデータ集計・可視化をさらに強化してみてください。特定条件の行数を正確に把握できるようになると、レポートの訴求力がぐっと高まります。社内の意思決定の場でも「どの条件でいくつのデータがあるのか」を即座に示せるようになり、データドリブンな分析に大きく役立つでしょう。
本記事をきっかけに、Power BIでの特定の値のカウントがスムーズに進むよう、ぜひ試行錯誤してみてください!
もし困り事があるなら、まずは無料相談を
「Power BI で箱ひげ図を使って詳細分析をしたいが、データモデルやDAX設計が複雑でわからない…」「Power Automate を併用してデータ更新フローを自動化したいが、どこから手を付ければいいのかわからない」といったお悩みをお持ちの方も多いのではないでしょうか。
私たちは、Power BIやPower AutomateなどのMicrosoft製品の導入・運用支援、およびデータ活用コンサルティングを行っています。
-
具体的な設定や開発代行
-
社内教育のための伴走型支援
-
有料プランへの移行タイミングやROIの判断支援
など、さまざまなニーズに合わせたサービスをご用意しています。まずはお気軽に「無料相談」へお申し込みください。下記のリンクからお問い合わせいただけます。
7. セミナーで学ぶ!DAX 関数の実践スキル
箱ひげ図をはじめ、Power BIを使いこなすうえで欠かせないのがDAX関数の知識です。DAXをしっかり学ぶことで、データの前処理から複雑な指標の算出までスムーズにこなせるようになります。そんなDAXとデータモデル設計を効率よく学習できるハンズオンセミナーを開催しています。
🔰 Power BIハンズオンセミナー初級編
-
短時間でデータモデリングの基礎を身につける
-
実務にすぐ活かせるレポート作成を実践形式で学ぶ
-
少人数制なので、つまずきポイントを都度フォロー
🚀 Power BIハンズオンセミナー中級編
-
DAX関数 × データモデル設計 の実践的なノウハウを習得
-
複雑な分析要件にも対応できる応用力を身につける
-
即戦力として業務効率アップや社内評価向上に直結
👉 詳細はこちら
DAXをしっかりマスターすると、箱ひげ図のような高度な可視化においても、必要なデータを柔軟に加工・集計できるようになります。結果的に、組織全体のデータドリブン化をリードできる存在となり、キャリアアップにも大いに役立ちます。
コメント