クイック スタート: 30 分で学ぶ DAX の基礎

クイック スタート: 30 分で学ぶ DAX の基礎

Excel for Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 その他…表示数を減らす

このクイック スタートは、Excel の PowerPivot または SQL Server Data Tools によって作成されたテーブル モデル プロジェクトを初めて使うユーザー向けに用意されています。 このクイック スタートは、Data Analysis Expressions (DAX) を使っていくつかの基本的なデータ モデリングと分析に関する問題を解決する方法をわかりやすく手短に説明することを目的としています。 このトピックには、概念情報、一連の演習タスク、および学習内容を確認するためのいくつかの問題が含まれています。 このトピックを完了すると、DAX の最も基本的な概念を理解したことになります。

DAX とは

DAX は、計算を実行して 1 つ以上の値を返すために数式 (式) 内で使用できる関数、演算子、および定数のコレクションです。 つまり、DAX を使用すると、モデル内に既にあるデータから新しい情報を作成できます。

DAX が重要な理由

ブックを作成し、その中にデータをインポートするのは簡単です。 DAX 数式を使用しなくても、重要な情報を表示するピボットテーブルやピボットグラフを作成することができます。 しかし、日付範囲が異なる複数の製品カテゴリにわたって重要な販売データを分析する必要がある場合はどうしたらよいでしょうか。 また、複数のデータ ソースの複数のテーブルから重要な在庫データを結合する必要がある場合はどうしたらよいでしょうか。 DAX の数式は、こうした機能に加え、数多くの重要な機能を提供します。 効果的な DAX 数式の作成方法を学習することで、データを有効に活用できます。 必要な情報を入手したら、最終的な収益に影響を与える実際のビジネス上の問題を解決する作業に着手できます。 これがビジネス インテリジェンスであり、DAX がこれを使うための手助けとなります。

前提条件

既に Microsoft Excel で数式を作成することに慣れているかもしれません。 その知識は DAX の理解に役立ちますが、Excel 数式の経験がなくても、ここで説明する概念は、DAX 数式の作成と実際の BI の問題の解決をすぐに始めるのに役立ちます。

ここでは、計算で使用される DAX 数式の理解に特に焦点を当てます。 target=”_blank” title=”計算列” rel=”noopener”>計算列 target=”_blank” title=”メジャー” rel=”noopener”>メジャー (計算フィールドとも呼ばれます) の両方の基本的な概念については、どちらも「 PowerPivot ヘルプ」で説明されています。 また、Excel のオーサリング環境とツールの PowerPivot についても理解している必要があります。

サンプル ブック

DAX を学習するにあたって最善の方法は、基本的な数式を作成し、実際のデータを使い、自分で結果を確認することです。 ここで使う例およびタスクでは、Contoso Sample DAX Formulas.xlsx ブックを使います。 このブックは、http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409 からダウンロードできます。 コンピューターにダウンロードしたブックを開き、PowerPivot ウィンドウを開きます。

作業の開始

ここでは、DAX の構文、関数、およびコンテキストの 3 つの重要かつ基本的な概念について説明します。 DAX にはこれ以外にも重要な概念がありますが、この 3 つの概念を理解することが DAX のスキルを得るための最適な基盤となります。

構文

数式を作成する前に、DAX の数式の構文を見てみましょう。 構文には、数式を構成するさまざまな要素、つまり記述方法が含まれています。 例として、FactSales テーブル内の計算列 (Margin 列) の各行の新しいデータ (値) を作成するための単純な DAX 式を見てみましょう (わかりやすくするために数式の文字に色を付けてあります)。

この数式の構文には、次の要素が含まれています。

  1. 等号演算子 (=) は数式の先頭を示し、この数式を計算すると結果または値が返されます。 値を計算するすべての数式は、等号で始まります。

  2. 参照されている列 [SalesAmount] には、減算する値が含まれています。 数式内の列参照は、常に角かっこ [] で囲みます。 セルが参照される Excel の数式とは異なり、DAX の数式では常に列が参照されます。

  3. 減算 (-) 数学演算子。

  4. 参照されている列 [TotalCost] には、[SalesAmount] 列の値から減算する値が含まれています。

DAX 数式の読み方を理解するにあたり、それぞれの要素を分解し、日常で使用している言語で読み替えると効果的です。 たとえば、この数式は次のように読むことができます。

FactSales テーブルの Margin 計算列の各行について、[ SalesAmount] 列の値から [TotalCost ] 列 の (-) 値を減算して値を計算 (=) します。

メジャーで使用される別の種類の数式を見てみましょう。

この数式には、次の構文要素が含まれています。

  1. メジャー名売上金額の合計。 メジャーの数式には、メジャー名、コロン、計算式を含めることができます。

  2. 等号演算子 (=) は、計算式の開始を示します。 式が計算されると、結果が返されます。

  3. SUM 関数は、[SalesAmount] 列のすべての数値を合計します。 関数については、後で説明します。

  4. 1 つまたは複数の引数を囲むかっこ ()。 すべての関数で少なくとも 1 個の引数が必要です。 引数は、値を関数に渡します。

  5. 参照される FactSales テーブル。

  6. FactSales テーブル内の参照される [SalesAmount] 列。 この引数により、SUM 関数は合計する列を識別します。

この数式は次のように読むことができます。

"売上金額の合計" という名前の メジャー ではFactSales テーブルの [SalesAmount ] 列の値の合計を 計算 (=) します。

ピボットテーブル フィールド リストの [値] ドロップ ゾーンに配置すると、このメジャーはピボットテーブル内の各セル (米国の携帯電話など) によって定義された値を計算して返します。

この数式と Margin 計算列に使用された数式とを比較するといくつかの点が異なります。 特に、この数式には SUM 関数が使用されています。 関数は事前に作成された数式で、複雑な計算や数値、日付、時間、文字列などの操作を行う場合に便利です。 関数については、後で説明します。

上記の Margin 計算列とは異なり、[SalesAmount] 列の前に、列が属している FactSales テーブルが記述されています。 これは、列名の前にテーブル名が記述されていることから、完全修飾列名と呼ばれます。 同じテーブル内で参照される列の場合は、数式にテーブル名を含める必要はありません。 これにより、多数の列が参照されている長い数式がより短く読みやすくなります。 ただし、同じテーブル内にある場合でも、メジャー数式にテーブル名を常に含めるのが良い方法です。

注: テーブルの名前に空白や予約されたキーワード、または無効な文字が含まれる場合、テーブル名を単一引用符で囲む必要があります。 使用しているロケールで文字セットがサポートされているかどうかに関係なく、名前に ANSI 英数文字の範囲にない文字が含まれている場合も、テーブル名を引用符で囲む必要があります。

数式を正しい構文で指定することは重要です。 ほとんどの場合、構文が正しくないと、構文エラーが返されます。 また、構文が正しい場合でも、返される値が期待した値と異なる場合があります。 PowerPivot (および SQL Server Data Tools) には、ユーザーが適切な要素を選ぶのをサポートして構文的に正しい数式を作成するための IntelliSense 機能が用意されています。

それでは単純な数式を作成しましょう。 このタスクでは、数式の構文を理解し、数式バーの IntelliSense 機能がいかに便利であるかを体験します。

タスク: 計算列のための単純な数式を作成する

  1. PowerPivot ウィンドウにまだ表示されていない場合は、Excel の [ PowerPivot ] リボンの [ウィンドウの PowerPivot] をクリックします。

  2. PowerPivot ウィンドウで、FactSales テーブル (tab) をクリックします。

  3. 右端までスクロールし、列ヘッダーの [列の追加] をクリックします。

  4. モデル デザイナー ウィンドウの上部にある数式バー内をクリックします。

カーソルが数式バーに表示されます。 数式バーは、計算列や計算フィールドの数式を入力できる場所です。

ここで、数式バーの左側にある 3 つのボタンについて説明します。

数式バー内でカーソルがアクティブになると、これらの 3 つのボタンがアクティブになります。 左端のボタン (X) は、キャンセル ボタンです。 実際にクリックしてみましょう。 カーソルが数式バーから消え、キャンセル ボタンとチェックマーク ボタンも表示されなくなります。 もう一度数式バー内をクリックします。 キャンセル ボタンとチェックマーク ボタンが再び表示されます。 これは、新しい数式の入力を開始する準備ができたことを示します。

チェックマーク ボタンは、式の確認用のボタンです。 数式を入力するまでは意味を持ちません。 これについては、後で説明します。

[Fx] をクリックします。 新しい [関数の挿入] ダイアログ ボックスが表示されます。 [関数の挿入] ダイアログ ボックスは、DAX 数式の入力に慣れるのに最も簡単な方法です。 メジャーを少し後で作成するときに数式に関数を追加しますが、現時点では、計算列の数式に関数を追加する必要はありません。 先へ進み、[関数の挿入] ダイアログ ボックスを閉じます。

  1. 数式バーで、等号 = に続けて左角かっこ [ を入力します。 FactSales テーブルのすべての列が含まれた小さなウィンドウが表示されます。 これが、IntelliSense の機能です。

計算列は常に作業中のアクティブ テーブルに作成されるため、列名の前にテーブル名を記述する必要はありません。 先へ進み、下へスクロールしたら、[SalesQuantity] をダブルクリックします。 任意の列名までスクロールした後 Tab キーを押す方法もあります。

カーソルが [****SalesQuantity****] の右側でアクティブになります。

  1. スペースを入力し、減算演算子 (-) を入力したら、もう一度スペースを入力します。

  2. もう一度左角かっこ [ を入力します。 [****ReturnQuantity****] 列を選び、Enter キーを押します。

エラーが発生する場合は、構文が正しいことを確認してください。 必要に応じて、前に説明した Margin 計算列の数式と比較します。

Enter キーを押して数式を完成させると、PowerPivot ウィンドウの下部のステータス バーに "計算しています " と表示されます。 300 万行を超える新しい値を計算するときでも、この処理はすぐに完了します。

  1. 列ヘッダーを右クリックし、列の名前を NetSales に変更します。

これで完成です。 単純でありながら強力な DAX 数式を作成できました。 NetSales 数式により、FactSales テーブルのそれぞれの行について、[ReturnQuantity] 列の値を [SalesQuantity] 列の値から減算した値が計算されます。 ここで、"それぞれの行について" という表現に注目してください。 これは、DAX におけるもう 1 つの重要な概念である行コンテキストに関係します。 行コンテキストについては、後で説明します。

DAX 数式に演算子を入力するときは、使用している引数のデータ型を理解することが重要です。 たとえば、「= 1 & 2」という数式を入力した場合に返される値は、文字列値の "12" です。 これは、アンパサンド (&) 演算子が文字列を連結するための演算子であるためです。 DAX によるこの数式の解釈は、"値 1 を文字列として受け取り、値 2 を文字列として追加した結果を計算する" となります。 また、「= 1 + 2」と入力した場合、この数式は、"数値 1 を受け取り、数値 2 を加算した結果を計算する" と解釈されます。 結果は、数値の "3" になります。 DAX では、引数で使用されている列のデータ型ではなく、数式内の演算子に応じて結果の値を計算します。 DAX のデータ型は重要ですが、このクイック スタートの範囲外です。 DAX 数式のデータ型と演算子の詳細については、オンライン ブックの「Data Analysis Expressions (DAX) リファレンス」(http://go.microsoft.com/fwlink/?LinkId=239769&clcid=0x409) を参照してください。

例をもう 1 つ試してみましょう。 今回は、数式を入力し、IntelliSense を使用してメジャーを作成します。 数式を完全に理解できなくても心配する必要はありません。 ここで重要なのは、複数の要素を正しい構文で使用して数式を作成する方法を理解することにあります。

タスク: メジャー数式を作成する

  1. FactSales テーブルで、計算領域の任意の空白セルをクリックします。 これは、PowerPivot ウィンドウのテーブルの下の空白セルの領域です。

  1. 数式バーに、「Previous Quarter Sales:」という名前を入力します。

  2. 計算式を開始する等号 (=) を入力します。

  3. 最初の数文字として「CAL」を入力し、使用する関数をダブルクリックします。 この数式では、CALCULATE 関数を使用します。

  4. CALCULATE 関数に渡す引数を開始する左かっこ ( を入力します。

左かっこを入力すると、IntelliSense により、CALCULATE 関数に必要な引数が表示されます。 引数については後で説明します。

  1. FactSales テーブルの最初の数文字を入力し、ドロップダウン リストで FactSales****[****Sales] をダブルクリックします。

  2. コンマ (,) を入力して最初のフィルターを指定します。次に、「PRE」と入力し、PREVIOUSQUARTER 関数をダブルクリックします。

PREVIOUSQUARTER 関数を選ぶと、左かっこがもう 1 つ表示されます。これは、PREVIOUSQUARTER 関数用に別の引数が必要であることを示しています。

  1. 最初の数文字として「Dim」を入力し、DimDate****[****DateKey****] をダブルクリックします。

  2. 2 つの右かっこ )) を入力して、PREVIOUSQUARTER 関数と CALCULATE 関数に渡される 2 つの引数を閉じます。

数式は次のようになります。

Previous Quarter Sales:=CALCULATE(FactSales[Sales], PREVIOUSQUARTER(DimDate[DateKey]))

  1. 数式バーの式の確認用のボタンをクリックして、数式を検証します。 エラーが発生する場合は、構文の各要素を確認します。

これで完成です。 DAX を使用してメジャーを作成しただけで、簡単なメジャーではありません。 この数式には、ピボットテーブルまたはピボットグラフに適用されるフィルターに応じて前の四半期の売上合計を計算することが指定されています。

ここでは、DAX 数式のいくつかの重要な側面が示されました。 最初に、この数式には、2 つの関数が含まれています。 PREVIOUSQUARTER 関数が CALCULATE 関数に渡される引数として入れ子になっていることに注意してください。 DAX の数式には、最大で 64 個の関数を入れ子にして含めることができます。 ただし、そのような深いレベルに入れ子にされた関数を数式に含めることはあまりありません。 実際、このような数式は作成およびデバッグするのが困難で、処理速度も速くなりません。

この数式では、フィルターも使用しました。 フィルターを使用すると、計算の対象を絞り込むことができます。 この場合、1 つのフィルターを引数として選択しましたが、これは実際は別の関数です。 フィルターについては、後で説明します。

最後に、CALCULATE 関数を使用しました。 これは DAX で最も強力な関数の 1 つです。 データ モデルを作成し、より複雑な数式を作成すると、この関数が何度も使用される可能性があります。 CALCULATE 関数については、このクイック スタートの範囲外ですが、DAX に関する知識が増えるにつれて、これに特に注意してください。

注: 通常、DAX 数式でタイム インテリジェンス関数を使用するには、[日付テーブルとしてマーク] ダイアログ ボックスを使用して一意の日付列を指定する必要があります。 Contoso DAX Formula Samples.xlsx ブックでは、DimDate テーブルの DateKey 列が一意の日付列として選択されています。

特別課題

"作成できる最も簡単な DAX 数式は何ですか? さて、その答えは「あなたがする必要のない数式」です。 また、メジャーで標準集計関数を使用してできることは、まさにその通りです。 ほぼすべてのデータ モデルで、集計されたデータをフィルター処理して計算する必要があります。 たとえば、前に見た売上金額の合計メジャーの SUM 関数は、特定の列のすべての数値を加算するために使用されます。 DAX には、値を集計する他のいくつかの関数も含まれています。 AutoSum 機能を使用して、標準集計を使用して数式を自動的に作成できます。

追加与信タスク: AutoSum 機能を使用してメジャー数式を作成する

  1. FactSales テーブルで、ReturnQuantity 列までスクロールし、列ヘッダーをクリックして列全体を選びます。

  2. [ ホーム] タブのリボンの [ 計算 ] グループで、[ AutoSum] ボタンをクリックします。

[AutoSum] の横にある下矢印をクリックし、[平均] をクリックします (他の標準集計関数も使用できます)。

直ちに、Average of ReturnQuantity という名前の新しいメジャーが作成されます。その後に数式 =AVERAGE([ReturnQuantity]) が続きます。

このように、操作は簡単です。 もちろん、作成するすべての数式がこのように単純であるとは限りません。 しかし、オート SUM 機能により、標準の集計計算を使用して数式をすばやく簡単に作成できます。

これで、DAX の数式で使用される構文をよく理解できることでしょう。 ここでは、IntelliSense、オート SUM など、正確な数式をすばやく簡単に作成できるようにするいくつかの機能についても説明しました。 当然ですが、構文について学習できるリソースはたくさんあります。 構文の詳細については、DAX リファレンスや SQL オンライン ブックを参照してください。

構文に関するクイズ

  1. 数式バーのこのボタンは何を行いますか?

  2. DAX の数式では必ず列名を特定の文字で囲む必要があります。その文字とは何ですか。

  3. DimProduct テーブル UnitMargin 計算列の各行について、 UnitPrice 列の値から UnitCost 列の値を減算して 値を 計算する方法を説明 します

正解はこのトピックの最後にあります。

関数

関数は、引数と呼ばれる特定の値を特定の順序または構造で使用して計算を実行する定義済みの式です。 引数には、他の関数、他の数式、列参照、数値、文字列、論理値 (TRUE、FALSE など)、または定数を指定できます。

DAX に用意されている関数のカテゴリには、日付と時刻、情報、論理、数学、統計、文字列、およびタイム インテリジェンスがあります。 DAX の関数の多くは Excel の数式に使用される関数とよく似ていますが、DAX の関数には次の特徴があります。

  • DAX 関数は、常に列全体またはテーブル全体を参照します。 テーブルまたは列の特定の値のみを使用する場合は、数式にフィルターを追加できます。

  • 行ごとに計算をカスタマイズする必要がある場合、DAX には、現在の行値または関連する値を引数の一種として使用して、コンテキストによって異なる計算を実行できる関数が用意されています。 コンテキストの詳細については、後で説明します。

  • DAX には、値ではなくテーブルを返す多くの関数が含まれています。 テーブルは表示されませんが、他の関数の入力として使用されます。 たとえば、テーブルを取得して、含まれる個別値をカウントしたり、フィルター処理されたテーブルまたは列における動的な合計を計算したりできます。

  • DAX には、さまざまなタイム インテリジェンス関数が含まれます。 これらの関数を使用すると、日付範囲を定義または選択して、それに基づいて動的な計算を実行できます。 たとえば、並列期間の合計を比較できます。

ときには、数式内でどの関数を使う必要があるかを判断するのが難しいことがあります。 PowerPivot と SQL Server Data Tools のテーブル モデル デザイナーに用意されている関数の挿入機能のダイアログ ボックスでは、関数をカテゴリ別に選ぶことができ、また各関数の簡単な説明が表示されます。

それでは、新しい数式を作成しましょう。ここでは、関数の挿入機能を使用して関数を選びます。

タスク: 関数の挿入機能を使用して数式に関数を追加する

  1. FactSales テーブルで、右端の列までスクロールし、列ヘッダーで [列の追加] をクリック します

  2. 数式バーに等号 (=) を入力します。

  3. [ 関数の挿入 ] ボタンをクリックします。 [ 関数の挿入 ] ダイアログ ボックスが開きます。

  4. [ 関数の挿入 ] ダイアログ ボックスで、[ カテゴリの選択 ] リスト ボックスをクリックします。 既定では、[ すべて] が選択され、[すべて ] カテゴリのすべての 関数が次に一覧表示されます。 これは多くの関数なので、探している関数の種類を簡単に見つけられるように関数をフィルター処理する必要があります。

  5. この数式では、別のテーブルに既に存在するデータを返します。 そのため、フィルター カテゴリの関数を使用します。 [ フィルター] カテゴリをクリックし、[ 関数の選択] で下にスクロールし、RELATED 関数をダブルクリックします。 [ OK] を クリックして、[ 関数の挿入 ] ダイアログ ボックスを閉じます。

  6. IntelliSense を使用して、DimChannel[ChannelName] 列を見つけ、選択します。

  7. 数式を閉じ、Enter キーを押します。

  8. Enter キーを押して数式を完成させると、PowerPivot ウィンドウの下部のステータス バーに "計算しています" と表示されます。 FactSales テーブルに、DimChannel テーブルのチャネル情報を使う新しい列が作成されます。

  9. 列の名前を Channel に変更します。

数式は次のようになります: =RELATED(DimChannel[ChannelName])

DAX のもう 1 つの非常に重要な関数である RELATED 関数が導入されました。 RELATED 関数は、別のテーブルの値を返します。 RELATED は、現在開いているテーブルと取得する値が含まれているテーブルとの間にリレーションシップが存在する場合に使用できます。 RELATED 関数には大きな可能性があります。 このケースでは、FactSales テーブルの各販売に対して販売チャネルを含めることができるようになりました。 ここでピボットテーブルのフィールド リストの DimChannel テーブルを非表示にすると、移動が容易になり、本当に必要な重要な情報のみが表示されるようになります。 前に説明した CALCULATE 関数と同様、RELATED 関数は重要であり、何度も使うことになるでしょう。

これまで見てきたように、DAX の関数を使用すると、強力な数式を作成できます。 ここで触れたのは、関数の基礎にすぎません。 DAX のスキルが向上するのに応じて、多くの異なる関数を使用して数式を作成できるようになります。 すべての DAX 関数の詳細を確認するのに最適な場所の 1 つは、 データ分析式 (DAX) リファレンスにあります。

関数に関するクイズ

  1. 関数が必ず参照するものは何ですか。

  2. 数式に複数の関数を含めることはできますか。

  3. 2 つのテキスト文字列を 1 つの文字列に連結する場合、どのカテゴリの関数を使用しますか。

正解はこのトピックの最後にあります。

コンテキスト

コンテキストは、理解しておく必要がある最も重要な DAX の概念の 1 つです。 DAX には、行コンテキストとフィルター コンテキストの 2 種類のコンテキストがあります。 最初に、行コンテキストについて説明します。

行コンテキスト

行コンテキストは、現在の行と最も簡単に考えられます。 たとえば、構文について学習するときに前に見た Margin 計算列を思い出してください。 数式 =[SalesAmount] – [TotalCost] は、テーブル内の各行の Margin 列の値を計算します。 各行の値は、同じ行の [SalesAmount] と [TotalCost] という他の 2 つの列の値から計算されます。 DAX は、Margin 列の各行の値を計算できます。コンテキストがあるため、行ごとに [TotalCost] 列の値を受け取り、[SalesAmount] 列の値から減算します。

次の図の選択されたセルの値に注目してください。現在の行の値 $49.54 は、[SalesAmount] 列の値 $101.08 から [TotalCost] 列の値 $51.54 を減算した結果です。

行コンテキストが適用されるのは、計算列に限りません。 行コンテキストは、テーブル内の単一の行を識別するフィルターを適用する関数が数式に含まれるときはいつでも適用されます。 関数は、フィルターを適用するテーブルのそれぞれの行に対して本質的に行コンテキストを適用します。 ほとんどの場合、この種類の行コンテキストはメジャーに適用されます。

フィルター コンテキスト

フィルター コンテキストは、行コンテキストよりも理解することが少し難しい概念です。 フィルター コンテキストは、"結果または値を決定する計算で適用される 1 つまたは複数のフィルター" と最も容易に考えることができます。

フィルター コンテキストは、行コンテキストの代わりに存在するのではなく、行コンテキストに追加する形で適用されます。 たとえば、計算に含める値を絞り込むために、行コンテキストを指定するだけでなくその行コンテキストの特定の値 (フィルター) も指定するフィルター コンテキストを適用できます。

フィルター コンテキストは、ピボットテーブルで容易に見ることができます。 たとえば、TotalCost を [値] 領域に追加し、Year と Region を [行] 領域または [列] 領域に追加した場合、特定の年および地域に基づいてデータのサブセットを選ぶフィルター コンテキストを定義することになります。

DAX にとってなぜフィルター コンテキストがこれほどまで重要なのでしょうか。 フィルター コンテキストはピボットテーブルに列ラベルと行ラベルとスライサーを追加することで最も簡単に適用できますが、フィルター コンテキストは、ALL、RELATED、FILTER、CALCULATE、リレーションシップ、その他のメジャーや列などの関数を使用してフィルターを定義することで、DAX 数式にも適用できます。 たとえば、StoreSales というメジャーで次の数式を見てみましょう。

この数式は、これまでに見てきた他のいくつかの数式より明らかに複雑です。 ただし、他の数式と同様に、この数式も分解することでわかりやすくなります。

この数式には、次の構文要素が含まれています。

  1. メジャー名 StoreSales の後にコロン : が続きます。

  2. 等号演算子 (=) は、数式の開始を示します。

  3. CALCULATE 関数は、指定されたフィルターによって修飾されたコンテキストで、引数として式を評価します。

  4. 1 つまたは複数の引数を囲むかっこ ()。

  5. 式と同じテーブル内のメジャー [Sales]。 Sales メジャーには、=SUM(FactSales[SalesAmount]) という数式があります。

  6. コンマ (,) は、各フィルターを区切ります。

  7. 参照されている列と、フィルターとしての特定の値 DimChannel[ChannelName] ="Store"。

この数式では、フィルターとして Sales メジャーによって定義された売上値のみが、値 "Store" を持つ DimChannel[ChannelName] 列の行に対してのみ計算されます。

想像できるように、数式内でフィルター コンテキストを定義できると、強大な能力が得られます。 関連テーブル内の特定の値のみを参照できることは、その一例にすぎません。 この段階でコンテキストを完全に理解できなくても、心配する必要はありません。 自分で独自に数式を作成する経験を積むことで、コンテキストをさらに理解でき、DAX においてコンテキストが重要である理由も理解できます。

コンテキストに関するクイズ

  1. コンテキストの種類を 2 つ挙げてください。

  2. フィルター コンテキストとは何ですか。

  3. 行コンテキストとは何ですか。

正解はこのトピックの最後にあります。

概要

DAX の最も重要な概念の基本的な理解を得たので、計算列とメジャーの DAX 数式の作成を自分で開始できます。 実際、DAX は習得するのがやや難しいものの、さまざまなリソースを利用できます。 このトピックを何度か読み返し、自分で数式を作成する経験を積んだ後は、DAX の他の概念やビジネス上の問題を解決するのに役立つ数式について学習してみましょう。 利用できる DAX のリソースとしては、PowerPivot ヘルプ、SQL Server オンライン ブック、ホワイトペーパー、Microsoft および一流の BI プロフェッショナルのブログ記事があります。 出発点としては、DAX リソース センター Wiki (http://social.technet.microsoft.com/wiki/contents/articles/dax-resource-center.aspx) が最適です。 データ分析式 (DAX) リファレンスも優れたリソースです。 これをぜひお気に入りに登録しておいてください。

ダウンロード (http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409) して入手できる "DAX in the BI Tabular Model" ホワイトペーパーには、ここで紹介した概念の詳しい説明に加え、その他の高度な概念および数式が数多く紹介されています。 このホワイトペーパーでは、既にお持ちのものと同じ Contoso DAX Sample Formulas.xlsx DAX ブックも使用されます。

クイズの回答

構文:

  1. 関数の挿入機能を開きます。

  2. 角かっこ []。

  3. =[UnitPrice] – [UnitCost]

関数:

  1. テーブルと列。

  2. はい。 1 つの数式に最大で 64 個の関数を入れ子にして含めることができます。

  3. テキスト関数

コンテキスト:

  1. 行コンテキストとフィルター コンテキスト。

  2. 単一の値を決定する計算内の 1 つまたは複数のフィルター。

  3. 現在の行。

上部へスクロール