
Power BIの使い方を学ぶのは比較的簡単で、運が良ければ、組み込み機能だけでエンドユーザー向けのプロフェッショナルなダッシュボードを作成するために必要なものがすべて揃います。しかし、データ分析式を習得すれば、このプログラムをさらに活用できるようになります。DAXは、式で使用できる関数、演算子、定数のコレクションです。強力でありながら、習得は簡単です。
参照:採用キット: Microsoft Power BI 開発者(TechRepublic Premium)
このチュートリアルでは、DAX 式を記述するための基本的な概念と構文ルールを学習します。また、簡単な例も紹介します。このチュートリアルでは、Windows 10 64 ビット システムで Power BI Desktop を使用しています。
このチュートリアルの Microsoft Power BI デモ ファイルをダウンロードできます。
ジャンプ先:
- Power BI ユーザーが理解すべき DAX の用語と概念
- DAX式の書き方
- Power BI で DAX 式をメジャーとして使用する方法
- DAX式についての継続的な学習
Power BI ユーザーが理解すべき DAX の用語と概念
Power BI デザイナーとして、エンドユーザーが作成したものから必要な洞察をすべて得られるようにしたいと考えるでしょう。そのためには、データを評価して意味のある情報を返す関数セットである DAX を使用する必要がある場合もあります。
Power BI デザイナーのほとんどは式の記述に慣れており、このスキルセットは DAX を学ぶ際に特に役立ちます。Microsoft Excel 関数に詳しい方は、DAX と Excel 関数は似ているため、非常に便利です。
参照: The Complete Microsoft Power BI Super Bundle (TechRepublic Academy)
式を使った経験がなくても、DAXの使い方を学ぶことは可能です。最初のステップは、DAXの使い方を理解することです。そのためには、基本的な文法規則、つまり構文を学ぶ必要があります。
英語で「2021年の売上値を合計したい」と言うかもしれません。Power BIはこのリクエストを解釈できません。DAXを活用するには、外国語を学んでいると想像してみてください。ある意味、まさに外国語を学んでいるようなものです。ただ、関数、引数、そしてPower BIのコンテキストという言語を使っているだけです。
機能
関数は、指定した値を評価するための定義済みの命令です。日付と時刻、タイムインテリジェンス、情報、論理、数学、統計、テキスト、親子関係など、いくつかのカテゴリがあります。
ほとんどの関数は値を返しますが、テーブルを返すこともできます。関数は常にテーブルまたは列を参照しますが、フィルターを適用して特定の行を参照することもできます。
議論
引数を使用すると、関数に特定の値を渡し、評価させることができます。引数には、別の関数、式、列参照、値またはテキストのセット、TRUEやFALSEなどの論理値、定数など、リクエストのコンテキストを表す値を指定できます。
コンテクスト
例に進む前に、次のように、行を処理しているのか、フィルターされた結果を処理しているのかを表現できるコンテキストについて説明する必要があります。
- 行コンテキストは現在の行を参照します。通常はフィルターを適用することで実装されます。行コンテキストは通常、メジャーで使用されます。
- フィルターコンテキストとは、計算によって適用されるフィルターのことを指します。これはより複雑な議論になります。
これで、メジャーの形式で DAX 式を記述して、この新しく得た知識の一部を活用する準備が整いました。
DAX式の書き方
Power BI には、DAX で定義済みの計算である暗黙的なメジャーが多数用意されています。時間と労力を節約するために、独自のメジャーを作成する前に、利用可能なメジャーを確認することをお勧めします。利用可能なメジャーがない場合は、モデルまたは明示的なメジャーを作成する必要があります。
なぜメジャーから始めるのでしょうか?それは、メジャーが最も簡単な方法であり、ほとんどのカスタム計算ニーズを解決できる可能性が高いからです。
図Aに示すシンプルなデータセットを使用して、各レコードの年初来値を返すメジャーを作成しましょう。このシンプルな.pbixファイルでは、「フィールド」ペインの「Date」テーブルを「Date」テーブルとして使用します。
図A

まず、「フィールド」ペインでSalesテーブルを選択し、「計算」グループの「テーブルツール」コンテキストタブで「新しいメジャー」をクリックします。Power BIは数式バーに「Measure =」と入力します。これを図Bに示すように、次のDAX式に置き換えます。
Amount YTD =
TOTALYTD(SUM('Sales'[Amount]), 'Date'[Date])
図B

Power BIはSalesテーブルに「Measure」というメジャーを追加しますが、まだコミットはしません。このDAX式を個々の要素ごとに見てみましょう。
- 「Amount YTD」はメジャーの名前です。メジャーをコミットすると、Power BI の「フィールド」ペインの「メジャー」の名前が「Amount YTD」に更新されます。
- TOTALYTD は、各行の年初来の合計を計算する DAX 関数です。これは、上で説明した行コンテキストです。
- SUM は、指定された値の合計を返す別の DAX 関数です。
正確なDAX計算のための構文
ここで、DAX が何を解釈して必要な結果を計算する必要があるかを理解するために、構文を見てみましょう。
TOTALYTD 関数は次の構文を使用します。
TOTALYTD(<式>,<日付>[,<フィルター>][,<年末日>])
前述の通り、TOTALYTDはDAX関数であり、現在の(行)コンテキスト内で<式>の年初来の値を評価します。では、引数を見てみましょう。
- TOTALYTDは関数の名前です。
- 式は、スカラー値または単一の値を返す任意の式です。
- 日付は、現在の行の年を決定するために使用される日付値を含む列です。
- filter は、現在のコンテキストのフィルターを識別するオプションの引数です。
- year_end_dateは、年度末日を定義する日付を含むオプションの文字列です。デフォルトは12月31日です。つまり、会計年度が当年の12月31日に終了しない限り、日付を指定する必要はありません。
さて、DAXのSum関数を見てみましょう。これは、構文を使用して列の値を合計します。
SUM(<column>)
唯一の引数column は、合計する列を識別します。
それでは、他の要件を見てみましょう。
- DAX では、引数を括弧で囲む必要があります。
- DAX では、テーブルを一重引用符で囲む必要があります。
- DAX では、列を直線の括弧で示す必要があります。
- DAX では、引数をコンマで区切る必要があります。
DAX式を英語で解釈する
この新しい情報を踏まえて、
Amount YTD =
TOTALYTD(SUM('Sales'[Amount]), 'Date'[Date])
英語で?
この DAX 式は、英語では次のように表されます。「日付テーブルの日付列の日付値を使用して年を決定し、Sales テーブルの Amount 列の合計を返します。」 つまり、2 つの DAX 関数を使用して、年ごとに累計を返す式を記述したことになります。
DAX式をメジャーとしてコミットする方法
これで、式をメジャーとしてコミットし、ビジュアライゼーションに追加できるようになりました。コミットするには、数式バーの左側にあるチェックマークをクリックします。すると、図Cに示すように、「フィールド」ペインのリストにある「メジャー」の名前が「Amount YTD」に更新されます。エラーが発生した場合は、式を確認し、タイプミスを修正してください。
図C

先ほど、Dateは日付テーブルであると説明しました。日付テーブルに馴染みがなくてもご安心ください。Power BIは内部的に日付を適切に処理します。さらに詳しく知りたい場合は、以下の記事をご覧ください。
- Power BI を使用する際に自動日付テーブルが適切かどうかを確認する方法
- Microsoft Power BIで日付テーブルを作成する方法
Power BI メジャーの詳細については、次の記事をお読みください。
- Power BI Desktop で暗黙的なメジャーを操作する方法
- Microsoft Power BI Desktop で複雑な計算のためのクイックメジャーを追加する方法
ここで、メジャーとして記述された DAX 式がどのように機能するかを見てみましょう。
Power BI で DAX 式をメジャーとして使用する方法
メジャーを追加しても、特に何も起こりません。Power BI の「フィールド」ペインではメジャーの名前が更新されますが、実際にどのように動作するかを確認するには、手動で視覚化に追加する必要があります。図に示すシンプルなテーブル視覚化を使って、実際に追加してみましょう。
そのためには、「テーブル」ビジュアライゼーションをクリックして選択します。次に、「Amount YTD」メジャーにチェックを入れます。これにより、図Dに示すように、ビジュアライゼーションに「Amount YTD」メジャーが追加されます。
図D

SUM関数は「金額合計」列の値を合計する関数であることはご存じの通りです。Power BIでは、視覚エフェクトで「金額」列を使用する際にこの名前が付けられます。これは、この列が数学的な評価に使用できるためです。視覚エフェクト内でこの名前を変更することもできますが、現時点で表示されている値は「金額」列のリテラル値です。この列では合計は行われていません。
TOTALYTDの最初の引数は、SalesテーブルのAmount列を合計するSUM関数です。2番目の引数は、その列の年が変わったときに新しい合計を開始するようにPower BIに指示します。2021年12月15日と2022年2月17日の2つの日付の間に何が起こるかに注目してください。後者は新しい年なので、合計が最初から計算されます。これは内部命令なので、コードを記述する必要はありません。
でも、ちょっとサプライズがあります。Power BIには、同じ機能を持つクイックメジャーが用意されているので、年初来の計算式を自分で書く必要はありません。必要なのは、引数、つまりテーブルと列を指定することだけです。
DAX式についての継続的な学習
DAXの使い方を学ぶ最も簡単な方法の一つは、クイックメジャーを使ってみることです。インターフェース(「テーブルツール」タブ)を操作し、いくつかのメジャーを入力するだけです。理解できない関数や構文を見つけたら、検索エンジンを使って詳細を調べることができます。
参照:クイック用語集: ビジネス インテリジェンスと分析(TechRepublic Premium)
場合によっては、DAX を実装しなければ必要な結果を得られないことがあります。DAX とその構文、そしていくつかの関数について少し理解できたので、自分で式を記述する準備が整いました。
次に読む:最高のビジネス インテリジェンス ツール(TechRepublic)