進行状況を追跡し、最新情報を取得する

[進捗の追跡] をクリックすると、Power BI 学習リソースの更新内容を電子メールで送ることを Microsoft に承諾することになります。購読はいつでも中止できます。

×

素晴らしい! 最初のトピックを終了しました。

電子メール アドレスを入力して、進行状況を追跡したり、Power BI の新しい学習コンテンツについての最新情報を取得したりします。

[進捗の追跡] をクリックすると、Power BI 学習リソースの更新内容を電子メールで送ることを Microsoft に承諾することになります。購読はいつでも中止できます。

×

ありがとうございました!

ガイド付き学習を進めていくにつれ、完了済みのトピックの隣に緑のチェックマークが表示されます。

×

基礎の学習が完了しました。

概要が完了したので、次は詳細を見ていきます。

DAX テーブルとフィルター処理

DAX と Excel の数式言語の間には大きな違いがあります。それは、DAX の場合、式の間での受け渡しの対象が単一の値に制約されるのでなく、*テーブル全体*を受け渡しできるということです。 強力な機能として、DAX では、式内でテーブルをフィルター処理し、フィルター処理された値セットを使用できることが挙げられます。

DAX では、まったく新しい計算テーブルを作成し、そのテーブルを他の任意のテーブルと同様に扱うことができます。たとえば、データ モデル内で新しいテーブルと他のテーブルとの間にリレーションシップを作成できます。

DAX テーブル関数

DAX には、さまざまなテーブル関数が用意されています。たとえば、次のようなものがあります。

  • FILTER
  • ALL
  • VALUES
  • DISTINCT
  • RELATEDTABLE

これらの関数は、値ではなく、テーブル全体を返します。 通常、テーブル関数の結果は、最終的な値としてではなく、大きな式の一部として後続の分析で使用します。 テーブル関数では、列のリレーションシップが結果に継承されることに十分注意してください。

それぞれのテーブル関数がテーブルを使用し、テーブルを返す限り、式内で複数のテーブル関数を組み合わせることができます。 たとえば、次の DAX 式があるとします。

FILTER (ALL (Table), Condition)

その式は、現在のフィルター内容を無視して、*テーブル*全体にフィルターを適用します。

DISTINCT 関数は、現在のコンテキストでも表示される、列の個別の値を返します。 上記の DAX 式の例を使用する場合、その式に ALL を使用するとフィルターは無視され、ALLDISTINCT に置き換えると、フィルターが機能します。

DAX での値のカウント

Power BI レポート ビルダーに対してよく与えられる質問の 1 つに、

  • "この列に値がいくつあるか?" という質問があります。

これは、目の前に表示されているテーブルを見れば簡単に答えられる質問かもしれませんが、DAX では、特にテーブル間にリレーションシップが存在する場合に異なるアプローチが採用されます。

たとえば、Power BI および DAX では、適切に相互参照されていない値が含められます。 入力リレーションシップが切断されている場合、DAX は、関連付けられているテーブルにすべてのフィールドが空白の新しい行を追加し、その新しい行をインデックス付けられていない行にリンクして、参照整合性を確保します。 関数に空白行が含まれている場合 (ALL を使用した場合によくある)、それらの空白行は、対象の列に対して返される値の数に含められます。

DAX 関数を使用して計算テーブル全体を作成することもできます。 DAX を使用して作成する計算テーブルには、名前テーブル関数が必要です。 計算テーブルは、リレーションシップの確立を含め、他のテーブルと同様に使用することができます。

ビデオ コンテンツは、SQLBI 社の Alberto Ferrari 氏のご厚意によるものです。

Request demo