DAX の概要

完了

Data Analysis Expressions (DAX) は、計算列、メジャー、およびカスタム テーブルを作成するために Microsoft Power BI 全体で使用されるプログラミング言語です。 関数、演算子、および定数を集めたもので、これらを数式または式の中で使用して、1 つまたは複数の値を計算して返すことができます。 DAX を使用すると、計算とデータ分析に関する多数の問題を解決できます。これは、既にモデル内に存在しているデータから新しい情報を作成するのに役立ちます。

Power BI では、さまざまな計算手法と関数を使用してメジャーや計算列を作成できます。 主として、これらの手法を使うことで同様の結果を得られるようになりますが、カギを握るのはそれを適用する方法と条件を理解することです。 どの手法を、どのように、いつ使用するかについて基本的な知識を持つことで、堅牢かつパフォーマンスに優れたデータ モデルを作成できるようになります。

このモジュールを完了すると、次のことができるようになります。

  • クイック メジャーを構築する。

  • 計算列を作成する。

  • DAX を使用してメジャーを構築する。

  • コンテキストによる DAX メジャーへの影響について確認する。

  • CALCULATE 関数を使用してフィルターを操作する。

  • DAX を使用してタイム インテリジェンスを実装する。

計算列を使用する

DAX を使用すると、さまざまなデータ ソースから取り込んだデータを、もともとデータ ソースに存在しなかった計算列を作成することで拡張できます。 この機能は慎重に使用する必要があります。これについては、このモジュールで後ほど説明します。

たとえば、販売取引を含むデータベースからデータをインポートするとします。 個々の販売取引には、次の列が含まれます:Order IDProduct IDQuantityUnit Price。 各注文の売上合計を表す列は存在していないことがわかります。

Note

このモジュールはデータの視覚化に関するものではありませんが、DAX の動作のしくみを実演するためにデータの視覚化が示されています。 詳細については、Power BI でのデータの視覚化に関するラーニング パスをご覧ください。

次の図は、Power BI のテーブル ビジュアルでデータが最初どのように表示されるかを示しています。

DAX を使用する前の product テーブルのスクリーンショット。

単価と数量を乗算する計算列を作成することで、DAX の使用を開始できます。 この計算列によって、行ごとに "Total Price" という値が作成されます。 新しい列を作成するには、[フィールド] の一覧からテーブルの省略記号 ([...]) ボタンを選択し、[新しい列] を選択します。

[フィールド] リストの省略記号ボタンのスクリーンショット。

上部のリボンの下の数式バーに、新しい DAX 式が表示されます。

新しい DAX 式を入力する場所を示すスクリーンショット。

既定のテキスト "Column =" を、次のテキストの例に置き換えることができます。

Total Price = 'Sales OrderDetails'[Quantity] * 'Sales OrderDetails'[Unit Price]

等号の左側にある値は、列名です。 等号の右側にあるテキストは、DAX 式です。 このシンプルな DAX 式では、個々の行について数量の値を取得し、単価の値と乗算します。 テーブル内のレコードごとに 1 つの値が生成されます。 [フィールド] の一覧から視覚エフェクトに新しい列をドラッグすると、新しい値が表示されます。

新しい [Total Price] 列を示すスクリーンショット。

上記のスクリーンショットは、DAX の計算が正しく実行され、目的の結果が表示されていることを示しています。

計算列は、Power BI ファイル拡張子 .pbix で具体化されます。つまり、計算列を追加するたびに、ファイル全体のサイズが大きくなります。 計算列が多すぎると、パフォーマンスが低下し、Power BI の最大ファイル サイズにより早く到達してしまいます。

カスタム列を作成する

Power BI でカスタム列を作成するには、次の 3 つの方法があります。

  • データを取得するときに、ソース クエリで列を作成する。たとえば、リレーショナル データベースのビューに計算を追加する。

  • Power Query でカスタム列を作成する。

  • Power BI Desktop で DAX を使用して計算列を作成する。

データ ソースからデータを取り出す際に、計算列を作成できます。 この操作を完了するための手法は、各データ ソースによって異なります。 たとえば、SQL 言語で記述されたビューを使用してリレーショナル データ ソースからデータを取り出す場合は、次の例のようになります。

CREATE VIEW OrdersWithTotalPrice
AS
SELECT unitprice, qty, unitprice * qty as TotalPrice 
FROM sales.salesorders

SQL 言語を使用すると、データ ソースによって計算が行われるため、効率的に列を作成できます。 Power BI では、計算列は他の列と同様に表示されます。

また、Power Query を使用してカスタム列を作成することもできます。

Power Query のカスタム列ダイアログ ボックスのスクリーンショット。

カスタム列のダイアログでは、M 言語を使用して新しい列を作成します。 M 言語は、このモジュールの目的の範囲外です。

計算列を作成する 3 番目の方法は、前に示したように、Power BI で DAX を使用することです。

DAX を使用して計算列を作成する場合、新しい列を表示するためにデータセットを更新する必要はありません。 他の方法では、変更内容を確認するために更新が必要です。 大量のデータを使用している場合は、この処理に時間がかかることがあります。 ただし、この問題はそれほど重要ではありません。列を作成した後に変更することはほとんどないためです。

DAX の計算列が他の方法のように圧縮されることはありません。 他の列の型は圧縮されるため、.pbix ファイルが小さくなり、通常はパフォーマンスが向上します。

一般に、列の作成が早ければ早いほど良い結果を得られます。 別のメカニズムを使用できる場合は、計算に DAX を使用することは最適な方法とは見なされません。

また、計算列の使用を回避する方法の 1 つは、SUMX、COUNTX、MINX などの X 関数のいずれかを使うことです。 X 関数はこのモジュールの範囲を超えていますが、これを使用すると、個々の行のデータを認識するメジャーを作成し、行の合計に基づいて合計を計算することができます。 これらの関数はメジャー内で使用されますが、個々の行を反復処理して計算を行うため、反復関数と呼ばれます。 X 関数は、計算列よりもパフォーマンスに優れ、使用するディスク領域が少なくなります。 X 関数の詳細については、Microsoft のドキュメントをご覧ください。

メジャーを使用する

行ごとに操作を行う必要がある場合は、計算列が便利です。 ただし、その他の状況では、より簡単な方法が必要になる場合があります。 たとえば、データセット全体にわたる集計が必要で、またすべての行の売上合計が必要な場合を考えてみます。 さらに、年別の売上合計、従業員、または製品など、他の基準によってそのデータを細かく分ける必要があるとします。

このようなタスクを実行するには、メジャーを使用します。 メジャーは DAX コードを記述せずに構築できます。クイック メジャーを作成すれば、Power BI によって自動的に記述されます。

お客様のニーズに合わせて、多くの計算カテゴリと各計算を変更するための方法を利用できます。 もう 1 つの利点は、クイック メジャーによって実装される DAX を確認しながら、ご自身の DAX に関する知識を促進または拡大できることです。

クイック メジャーを作成する

Power BI Desktop でクイック メジャーを作成するには、[フィールド] ペインで任意の項目の横にある省略記号 ([...]) ボタンを右クリックまたは選択し、表示されるメニューから [新しいクイック メジャー] を選択します。 [クイック メジャー] 画面が表示されます。

[クイック メジャー] ダイアログ ボックスのスクリーンショット。

[クイック メジャー] ウィンドウでは、必要な計算と、計算の実行対象となるフィールドを選択できます。 たとえば、計算と、操作対象の列を選択できます。 Power BI によって自動的に DAX メジャーが作成され、DAX が表示されます。 この方法は、DAX の構文を学習するのに役立つ可能性があります。

詳細については、「クイック メジャーを使用して一般的な計算を実行する」ドキュメントを参照してください。

メジャーを作成する

メジャーは、いくつかの最も一般的なデータ分析で使用されます。

前のシナリオに続けて、データセット全体で新しい列の合計を計算するメジャーを作成するとします。 計算列を作成した方法と同様に、[フィールド] リストに移動し、選択されたフィールドの 3 つのドットの省略記号をクリックし、[新しいメジャー] を選択できます。

これで、リボンの下の数式バーにテキストが表示されます。

新しいメジャーを入力する場所のスクリーンショット。

"Measure =" のテキストを次のテキストに置き換えることができます。

Total Sales = sum('Sales OrderDetails'[Total Price])

これで、新しいメジャーが [フィールド] の一覧に表示されます。

フィールドの一覧の新しいメジャーのスクリーンショット。

Total Sales をレポート デザイン画面にドラッグすると、組織全体の売上合計が縦棒グラフで表示されます。

縦棒グラフの Total Sales メジャーのスクリーンショット。

計算列とメジャーの相違点

計算列とメジャーの根本的な違いは、計算列ではテーブル内の各行に対して値が作成されるということです。 たとえば、テーブルに 1,000 行が含まれている場合、計算列では 1,000 個の値が作成されます。 計算列の値は、Power BI の .pbix ファイルに格納されます。 各計算列によって、そのファイルで使用される領域が増え、更新時間が長くなる可能性があります。

メジャーは必要に応じて計算されます。 ユーザーが要求したときに、Power BI によって正しい値が計算されます。 以前に Total Sales メジャーをレポートにドラッグしたときは、Power BI によって正しい合計が計算され、視覚エフェクトが表示されました。 メジャーは、Power BI の .pbix ファイルの全体的なディスク領域には追加されません。

メジャーは、レポート ユーザーが使用するフィルターに基づいて計算されます。 これらのフィルターの組み合わせによって、フィルター コンテキストが作成されます。