1. はじめに
1.1 Power BI での IF 関数の役割
Power BI で分析・レポートを作成する際、特定の条件を満たす場合に値を変えたり、状況に応じて動的に指標を切り替えたりする必要がでてきます。たとえば、「売上が目標を達成したら “達成”、そうでなければ “未達成”」とラベルを振りたい場合です。
そこで活躍するのが IF 関数 です。IF 関数を用いると、条件分岐 を扱えるようになり、レポートに柔軟性を持たせることができます。
1.2 DAX (Data Analysis Expressions) とは
DAX (Data Analysis Expressions) は、Power BI・Excel の Power Pivot・Analysis Services などで使用される数式言語です。SUM や AVERAGE といった基本的な集計関数から、CALCULATE などの強力な関数まで、多彩な機能を備えています。
DAX では IF 関数 だけでなく、TIMEINTELLIGENCE 関数や、行コンテキスト/フィルターコンテキストといった概念を理解しておくと、より高度な分析が可能になります。
1.3 IF 関数と Power Query (M 言語) の違い
Power BI のデータ変換画面(Power Query エディター)で使用される言語は M 言語 と呼ばれます。M 言語では、if ~ then ~ else ~
の形をとり、DAX 関数の IF とは構文や適用タイミングが異なります。
-
DAX:レポートやモデル上で、集計や計算列/メジャー を作成するときに使う
-
M 言語(Power Query):データのインポートや変換(クレンジング)段階で使う
本記事では、主に DAX の IF 関数 にフォーカスします。
2. IF 関数の基本構文
2.1 IF 関数とは
IF 関数は、「条件が TRUE の場合」と「FALSE の場合」で返す値を指定できる、最も基本的な条件分岐関数です。
2.2 IF 関数の書き方 (DAX)
-
<logical_test>
:[売上] > 1000000
のような論理式を設定します。 -
<value_if_true>
:条件が満たされた場合の戻り値を指定します。 -
<value_if_false>
:条件が満たされなかった場合の戻り値を指定します。(省略した場合は BLANK() またはエラー扱いになるケースがあります)
2.3 TRUE/FALSE 評価の仕組み
DAX においては、条件が正しい場合は TRUE、間違っている場合は FALSE となります。比較演算子(=
, >
, <
, >=
, <=
, <>
)や、論理演算子(AND
, OR
, NOT
)を組み合わせて複雑な条件を作ることもできます。
3. 実践:IF 関数の活用例
3.1 単純な条件分岐例
例:目標売上を 100 万円とし、それ以上なら “達成”、それ未満なら “未達成” と表示する計算列を作る
このように計算列を作成するだけで、各行(各商品や地域など)ごとに達成か未達成かを判別してくれます。
3.2 複数条件がある場合の書き方 (Nested IF / SWITCH)
IF 関数を入れ子(ネスト)にすると、条件が多いときに可読性が下がりがちです。例えば、「売上が 200 万円以上なら “特A”、100 万円以上なら “A”、それ以外は “B”」のようなケースです。
複数の条件を扱う場合、SWITCH 関数 を使うとスッキリ書けます。
-
TRUE()
を最初に置くことで、順番に条件を評価し、最初に TRUE となった場所の値を返します。
3.3 ブール演算子 (AND, OR) と組み合わせる
IF 関数では、条件式の中に AND
や OR
を使って 複数の条件を同時に評価 できます。
このように書けば、売上と利益率の両方が一定以上の場合のみ “好調” と返す、といったロジックを作れます。
4. 計算列とメジャーでの使い方の違い
4.1 計算列 (Calculated Column) での IF 関数
計算列は、テーブルに新しい列を追加し、行単位のコンテキストで計算を行います。各行の [売上] や [利益] を参照し、それをもとに IF 関数が TRUE/FALSE を返します。
-
メリット:ビジュアルで使いやすい(列として扱える)
-
デメリット:データ量が多い場合、メモリ使用量が増えやすい
4.2 メジャー (Measure) での IF 関数
メジャーは、ビジュアルやフィルターのコンテキストに応じて動的に値を計算します。たとえば、テーブルやマトリクスに [売上] を置いて切り替えて表示する場合などに便利です。
-
メリット:集計された結果に対して条件分岐をかけられる
-
デメリット:ビジュアル上でしか表示できず、列のように行ごとの値を持たない
4.3 選択する際のポイント (Row Context vs Filter Context)
-
Row Context:計算列は行ごとのコンテキスト(Row Context)で評価
-
Filter Context:メジャーは、ビジュアルやフィルターの状況(Filter Context)で評価
実装したいロジックが「行ごとに固定的なフラグを立てたい」のか、「ビジュアルの集計レベルで条件分岐したい」のかによって、計算列かメジャーを選択するとよいでしょう。
5. 具体例:売上管理ダッシュボード
5.1 製品ごとに評価ラベルを付ける
複数の指標(売上高、在庫回転率、利益率など)を加味して、製品にランク付けをする場面がよくあります。
たとえば、「売上高が 200 万円以上」かつ「利益率が 15% 以上」の場合に “高需要商品” とラベルを付けるロジックは、以下のように書けます。
5.2 目標売上と実績売上を比較して色分けする
Power BI の条件付き書式機能と組み合わせると、IF 関数で返した値(たとえば数値や文字列)をもとに、表やカードビジュアルの背景色・フォント色を変えることができます。
メジャーで “1” や “0” を返すようにしておいて、条件付き書式のルールで “1 のときは緑、0 のときは赤” と設定する、などの工夫が可能です。
5.3 セグメント別に可視化しやすい形へ変換する
「法人向け(B2B)」と「個人向け(B2C)」など、セグメントを区別したい場合にも IF 関数が役立ちます。データに “セグメント” が含まれない場合でも、アドホックに IF 関数で分類列を作ることができます。
6. IF 関数の応用パターン
6.1 同じ処理を複数条件で分岐させる (SWITCH 関数の活用)
先述の通り、複数段階の評価をしたい場合は SWITCH 関数が便利です。たとえば、売上に応じたスコアリングをする場合は、以下のように書けます。
6.2 CALCULATE や SUMX など他の DAX 関数と組み合わせる
IF 関数の <logical_test>
部分には、CALCULATE(SUM(テーブル[売上]))
のような集計関数も使えます。これにより、特定のフィルターコンテキストを適用した結果に応じて、条件分岐が可能になります。
6.3 条件付き書式と連携して動的に色やアイコンを変更する
Power BI には、表やマトリクス・カードなどで “条件付き書式” を設定する機能があります。IF 関数で数値や文字列を返すメジャーを作っておけば、その結果をもとに背景色・アイコン・データバーなどを表示させることができます。
-
例:
IF([売上] >= [目標], 1, 0)
→ 条件付き書式で 1 のセルに緑色の背景を適用
7. トラブルシューティング & ベストプラクティス
7.1 IF 関数が意図しない結果を返す場合のチェックポイント
-
条件が正しいか?:演算子(> や >=)の向きに誤りがないか
-
データ型が一致しているか?:文字列と数値を比較していないか
-
フィルターコンテキスト が意図しない形になっていないか(メジャー使用時)
7.2 ネストが深くなりすぎたときの対処 (SWITCH 関数の検討)
ネストした IF が 3 段階以上になるとコードが読みにくくなります。そんなときは、SWITCH 関数 の方がシンプルになるケースが多いです。可読性を重視するなら、早めに SWITCH 関数に切り替えるのがベターです。
7.3 パフォーマンスを意識した条件分岐の組み方
大規模データを扱う場合、無駄な計算列を増やすとモデルサイズが大きくなり、レポートが重くなる可能性があります。
-
計算列よりメジャーの使用を検討:動的に必要なときだけ評価される
-
単一テーブルにまとめるより、必要なときに参照:リレーションを使ってデータ量を最適化
8. まとめ
8.1 本記事のおさらい
-
IF 関数は条件分岐を実現するための基本的な関数
-
ネストが深くなる場合や複雑な条件には SWITCH や他の演算子を活用
-
計算列とメジャーの使い分けが重要:Row Context と Filter Context を意識
8.2 今後の学習リソース紹介
-
Microsoft 公式ドキュメント
DAX 関数リファレンス (Microsoft Docs) -
Power BI Community
実例やトラブルシューティングのナレッジが多く共有されており、学びの参考になります。
8.3 次のステップ
-
SWITCH 関数のマスター:IF より可読性が高い書き方を習得
-
Time Intelligence 関数との組み合わせ:期間比較や前年度比など複雑な分析を条件分岐で制御
-
条件付き書式の使いこなし:IF 関数で返した値をもとに、見やすいレポートデザインを実現
終わりに
Power BI における IF 関数 は、データを条件ごとに分類したり、動的にフラグを立てたりする際に欠かせない強力なツールです。特に、DAX の概念(Row Context や Filter Context)を理解したうえで IF 関数を使うと、シンプルな集計だけでは得られない柔軟なレポートを構築できます。
また、条件が複雑化する際には SWITCH 関数の利用を検討するなど、可読性やメンテナンス性 を高める工夫も大切です。IF 関数の活用テクニックをマスターして、より高度な 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関数 × データモデル設計 の実践的なノウハウを習得
-
複雑な分析要件にも対応できる応用力を身につける
-
即戦力として業務効率アップや社内評価向上に直結
👉 詳細はこちら
コメント