Power BIでサクッとできる!特定値のカウント術

Power BIで「特定の値」をカウントする方法

Power BIを使ってデータを分析するとき、「特定の値を持つ行が何件あるのか知りたい」「特定の条件を満たすレコード数をカウントしたい」といったニーズは非常に多いです。たとえば、売上テーブルの中で「商品A」の購入が何件あったのか、顧客データの中から「契約ステータス=有効」の件数がどのくらいあるのかなど、データの状況把握にカウント系の数値は欠かせません。

本記事では、Power BI(特にDAX)を用いて「特定の値」をカウントする方法をわかりやすく解説します。


1. 基本の考え方:COUNT系関数とCALCULATEの組み合わせ

Power BIでは、DAX(Data Analysis Expressions)という数式言語を使ってメジャー(Measure)を作成することで、動的な集計やカウントを行います。

  • COUNT: 文字列や数値を含む列の非BLANK値をカウント。

  • COUNTROWS: テーブルの行数をカウント。

  • DISTINCTCOUNT: 列のユニークな値の数をカウント。

一方、CALCULATE関数は“集計にフィルター条件をかける”ときに使います。

DAX
CALCULATE(<集計関数>, <フィルター条件1>, <フィルター条件2>, ...)

たとえば、テーブル全体から特定の商品に関する行数だけを数える、といったときに利用します。


2. 最もシンプルな例:列に対する条件付きカウント

2-1. COUNTROWS + CALCULATEでの例

シナリオ

テーブル名「Sales」、列名「ProductName」には商品名が入っているとします。その中で、商品名が「Product A」の行だけをカウントしたい場合。

DAXの例

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は“列における非空白の値の件数”を数えます。以下のように、対象列を指定する場合もあります。

DAX
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の例

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の例

DAX
DistinctCategoryCount =
DISTINCTCOUNT(Sales[Category])

これで、Salesテーブルの中に存在する重複を除いた「Category」の種類数をカウントします。

フィルターを組み合わせる場合

「特定の値」のユニーク数を知りたい場合は、CALCULATEと組み合わせられます。

DAX
DistinctCategoryOfProductA =
CALCULATE(
DISTINCTCOUNT(Sales[Category]),
Sales[ProductName] = "Product A"
)

5. 条件によって0を返したい場合の工夫

DAXのカウント系関数では、フィルター結果が0件になるとBLANKになる場合があります。
ビジュアル上で明確に「0」と表示したい場合は、COALESCE関数やIF関数を組み合わせることで回避できます。

DAX
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)を作成し、その合計をメジャーで算出する方法です。

計算列の例

DAX
IsProductA =
IF(
Sales[ProductName] = "Product A",
1,
0
)

メジャーの例

DAX
CountProductA =
SUM(Sales[IsProductA])

計算列IsProductAが1のレコードを合計すれば、”Product A”の行数になります。ただし、計算列は行数が多い巨大テーブルの場合、モデル容量が増えるなどパフォーマンスの面で注意が必要です。

推奨: まずはCALCULATE + カウント関数でメジャーを作る方が柔軟です。


7. クイックメジャー(Quick Measures)を活用する方法

DAXがあまり得意ではない方は、Power BIの「クイックメジャー」機能も検討してみましょう。

  1. レポートビューで右クリック → [新しいクイック メジャー]

  2. 数式の種類から「フィルターされた値の合計」や「条件に基づく計算」を選択

  3. 対象列やフィルターの条件を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をしっかりマスターすると、箱ひげ図のような高度な可視化においても、必要なデータを柔軟に加工・集計できるようになります。結果的に、組織全体のデータドリブン化をリードできる存在となり、キャリアアップにも大いに役立ちます。

関連記事

この記事へのコメントはありません。

カテゴリー

アーカイブ