Power BI DAXをマスターしよう:基本の5つの数式で複雑なExcel計算をシンプルに

大量のデータを扱うとき、IFやVLOOKUPのような高度な数式はExcelでは煩雑になりがちです。その点、Power BIに搭載されている「DAX(Data Analysis Expressions)」を活用すれば、こうした複雑な計算を効率的かつシンプルに行えます。DAX数式を使えば、従来のExcel数式よりも高性能で保守しやすい計算列・メジャー・テーブルを作成できます。
このチュートリアルでは、複雑なExcel計算を簡素化できる5つのPower BI DAX数式を解説します。ExcelのパワーユーザーがDAXを習得すれば、Power BIスキルが一段階向上し、より堅牢で効率的なデータ分析が実現します。
1. CALCULATE:フィルター コンテキストを自在に操る
Excelでは特定の条件に基づいて値を計算する際、IF関数を入れ子(ネスト)にする必要があることが多く、数式が読みにくくなりがちです。DAXのCALCULATE関数を使えば、フィルター コンテキストをより効率的かつ可読性高く変更できます。CALCULATEはDAXの中でも最も強力な関数の一つで、複雑な集計や動的なフィルタリングを可能にします。
Excelでの書き方:入れ子になったIF文
Excelでは次のような数式になります。
=IF(A2 > 100, "High", IF(A2 > 50, "Medium", "Low"))
Power BI DAXでの書き方
Filter Sales Category =
CALCULATE (
IF ( SUM ( Sales[SalesAmount] ) > 50000, "High", "Low" ),
Products[Category] = "Book"
)
この例では、CALCULATEが先にフィルター コンテキストを「Book」カテゴリのデータのみに絞り込み、その上で売上金額の合計が50,000を超えるかどうかを評価しています。
CALCULATEは現在のフィルター コンテキストを変更する関数です。既存のフィルター状態に対して指定した条件を適用するようPower BIへ指示でき、条件は必要に応じて複数重ねて使うことも可能です。
2. RELATED:関連テーブルの値を簡単に参照する
Excelでは別のテーブルから関連する値を取得するときに検索系関数を使用します。Power BIではRELATED関数を使うことで、このプロセスがより直感的かつ効率的になります。
Excelでの書き方:VLOOKUP
Excelでは次のような数式を使います。
=VLOOKUP(A2, SalesData, 2, FALSE)
この数式は、SalesData範囲の1列目がセルA2の値と一致する行の、2列目の値を取得します。
Power BI DAXでの書き方:RELATED
DAXのRELATED関数は、リレーションシップで結ばれた関連テーブルから値を取得します。RELATEDを使用するには、Power BIデータモデル内で2つのテーブル間にリレーションシップが設定されている必要があります。
- Salesテーブルの計算列
Product Category = RELATED ( Products[Category] )
ここでは、RELATED関数が既存のリレーションシップをもとにProductsテーブルから製品カテゴリを取得しています。これにより複雑な検索数式が不要になり、データモデルを活用することでエラーの発生も抑えられます。
3. SWITCH(TRUE(), …):入れ子IFのすっきりした代替手段
ExcelのIF関数は条件が多くなるほど管理が難しくなりますが、DAXのSWITCH関数を使えば条件分岐のロジックをスマートに記述できます。深くネストしたIF文を使わずに複数の条件を扱いたい場合に特に有効です。
Excelでの書き方:入れ子になったIF文
=IF(A2>100000,"High",IF(A2>50000,"Medium",IF(A2>10000,"Low","Tiny")))
Power BI DAXでの書き方
Sales Tier =
SWITCH (
TRUE (),
[Total Sales] > 200000, "High Performer",
[Total Sales] > 150000, "Strong",
[Total Sales] > 100000, "Moderate",
"Entry Level"
)
[Total Sales]は次のような別のメジャーとして定義されています。
Total Sales = SUM ( Sales[Amount] )
顧客セグメント:計算列の応用例
Customer Segment Logic =
SWITCH (
TRUE (),
CALCULATE ( [Total Sales] ) > 75000 && RELATED ( Regions[Country] ) = "United States", "US VIP",
CALCULATE ( [Total Sales] ) > 50000 && RELATED ( Regions[Country] ) = "United Kingdom", "UK Premium",
CALCULATE ( [Total Sales] ) > 30000 && RELATED ( Regions[Country] ) = "Canada", "Canada Premium",
Customers[CustomerType] = "Premium", "Premium Customer",
"Standard"
)
このアプローチは、深くネストしたIF文よりもはるかに読みやすくなります。セグメント化、ランク分け、KPI分類といった分類ロジックに最適な手法です。
4. SUMX:テーブルを行単位で反復して合計を計算する
行ごとに計算を実行し、その結果を集計したい場合に適しているのがSUMX関数です。テーブルを反復処理し、各行で式を評価した後、その結果を合計します。
Excelでの書き方:SUMPRODUCT
Excelでは次のように記述します。
=SUMPRODUCT(A2:A10, B2:B10)
Power BI DAXでの書き方
Total Revenue =
SUMX (
Sales,
Sales[Quantity] * Sales[UnitPrice]
)
SUMX関数はSalesテーブルの各行を順に処理し、「数量 × 単価」を計算したうえで、その合計値を返します。
5. CALCULATE+タイムインテリジェンス:手作業の日付計算からの解放
Excelで期間に関する計算を行う場合、複雑なSUMIFS、OFFSET、INDEX/MATCHの組み合わせに頼ることが少なくありません。DAXには組み込みのタイムインテリジェンス関数が用意されており、こうした作業を大幅に簡素化できます。
Power BI DAXでの書き方:前年比成長率
Sales YoY % Growth =
VAR CurrentSales = SUM ( Sales[SalesAmount] )
VAR PreviousSales =
CALCULATE (
SUM ( Sales[SalesAmount] ),
SAMEPERIODLASTYEAR ( 'Calendar'[Date] )
)
RETURN
DIVIDE ( CurrentSales - PreviousSales, PreviousSales, 0 )
シンプルに使える組み込みタイムインテリジェンス メジャー
YTD Sales =
TOTALYTD (
SUM ( Sales[SalesAmount] ),
'Calendar'[Date]
)
Sales vs Last Year =
CALCULATE (
SUM ( Sales[SalesAmount] ),
PARALLELPERIOD ( 'Calendar'[Date], -1, YEAR )
)
これらの関数は、月・四半期・会計年度などのスライサーを含む、レポート上のあらゆる日付フィルターとシームレスに連動します。補助列や手動の調整は一切不要です。
レポート上で使われるDAX数式
ワンポイント:DIVIDE関数でエラーを回避する
Excelではゼロによる割り算を行うとエラーが発生します。DAXのDIVIDE関数はゼロ除算を適切に処理できるため、より堅牢な計算が可能です。
DIVIDE関数では、ゼロ除算が発生した場合の代替結果を指定できます。
Profit Margin = DIVIDE ( Sales[Profit], Sales[Total Revenue], 0 )
分母がゼロの場合は0を返すため、追加のロジックを書かずに済み、エラーを確実に回避できます。
Excelユーザーのためのクイックスタートのコツ
- まずリレーションシップを構築する:RELATEDやCALCULATEの真価はここから発揮されます
- 列ではなくメジャーを作成する:メジャーの方が一般的に高速で柔軟性が高い
- 変数(VAR)を活用する:数式の可読性と保守性が向上します
- 空のビジュアルでテストする:カードやテーブル、スライサーを使ってメジャーの動きを検証しましょう
- パフォーマンスのコツ:フィルターはできるだけ絞り込む。列への直接フィルターは通常、テーブル全体のスキャンよりも高速です
まとめ
CALCULATE、RELATED、SWITCH、SUMX、そしてタイムインテリジェンス関数――これら5つのPower BI DAX数式を活用すれば、入れ子のIF文やVLOOKUPのような複雑なExcel数式が必要だった計算を、よりクリーンかつ効率的に処理できます。これらのテクニックを日々のワークフローに取り入れることで、データモデルの簡素化、パフォーマンスの向上、そして拡張性の高いレポート構築が実現します。
高度なExcel演習問題と解答を無料で受け取って、さらにスキルアップを目指しましょう!
-
Outlookエラー0x8004010F「Outlookデータファイルにアクセスできません」の原因と解決方法
Microsoft Outlookは、世界中で最も広く利用されているメールクライアントの一つです。多くの企業はもちろん、個人ユーザーから初心者ユーザーまで幅広い層に使われています。Outlookを日常的に使用している方なら、さまざまなエラーに遭遇した経験があるのではないでしょうか。これらのエラーは、Outlookプロファイルの破損、PSTファイルの破損、PSTファイルの移動など、さまざまな原因で発生します。数あるエラーの中でも特に頻繁に報告されるのが、エラー0x8004010Fです。 0x8004010F「Outlookデータファイルにアクセスできません」とは Microsoft Outlo
-
Excelで「データ分析」ツールを追加する方法|たった2ステップで完了
データ分析(Data Analysis)は、Excelのアドインプログラムの一つで、複雑な統計分析や財務分析を簡単に行えるようにしてくれる便利な機能です。相関関係、フーリエ解析、移動平均、回帰分析など、さまざまな数学的操作を手軽に実行できます。ただし、このデータ分析ツールパック(Analysis ToolPak)はデフォルトではインストールされていません。アドインを有効化すると、リボンの「データ」タブから利用できるようになります。本記事では、Excelにデータ分析ツールパックを追加する具体的な手順をわかりやすく解説します。それでは早速始めましょう。データ分析ツールパックの基本概要データ分析ツー