Excel-dax-formulas

提供:Dev Guides
移動先:案内検索

Excel DAX-数式

DAXは、Power PivotTablesでカスタム計算を作成するための式言語です。 リレーショナルデータを操作し、DAX数式で動的集計を実行するように設計されたDAX関数を使用できます。

  • DAX数式*はExcelの数式に非常に似ています。 DAX数式を作成するには、等号を入力し、その後に関数名または式、および必要な値または引数を入力します。

DAX関数と DAXフォーミュラ

DAX数式にはDAX関数を含めることができ、その使用法を活用できます。 これは、DAXの式が重要な点でDAX関数と異なる傾向がある場所です。

  • DAX関数は、常に完全な列またはテーブルを参照します。 テーブルまたは列の特定の値のみを使用する場合は、式にフィルターを追加できます。
  • 行ごとに計算をカスタマイズする場合、Power Pivotには、現在の行の値または関連する値を使用して、コンテキストによって異なる計算を実行できる関数が用意されています。
  • DAXには、単一の値ではなく、結果としてテーブルを返すタイプの関数が含まれています。 これらの関数を使用して、他の関数に入力を提供し、テーブルまたは列全体の値を計算できます。
  • 一部のDAX関数は、タイムインテリジェンスを提供します。これにより、意味のある日付範囲を使用して計算を作成し、並行期間にわたって結果を比較できます。

DAXフォーミュラ構文について

すべてのDAX式には次の構文があります-

  • 各数式は等号で始まる必要があります。
  • 等号の右側に、関数名を入力または選択するか、式を入力できます。 式には、DAX演算子で接続されたテーブル名と列名を含めることができます。

以下はいくつかの有効なDAXの式です-

  • [列コスト] + [列税]
  • =今日()

IntelliSense機能について

DAXはIntelliSense機能を提供します。これにより、DAXの式を迅速かつ正確に記述できます。 この機能を使用すると、テーブル、列、および関数の名前を完全に入力する必要はありませんが、DAX数式の作成中にドロップダウンリストから関連する名前を選択します。

  • 関数名の最初の数文字を入力し始めます。 オートコンプリートは、使用可能な機能のリストを、それらの文字で始まる名前で表示します。
  • 関数名のいずれかにポインターを置きます。 IntelliSenseツールチップが表示され、関数の使用方法が示されます。
  • 関数名をクリックします。 関数名が式バーに表示され、構文が表示されます。これは、引数を選択する際のガイドとなります。
  • 必要なテーブル名の最初の文字を入力します。 オートコンプリートは、その文字で始まる名前の使用可能なテーブルと列のリストを表示します。
  • Tabキーを押すか、名前をクリックして、オートコンプリートリストの項目を数式に追加します。
  • Fx ボタンをクリックして、使用可能な機能のリストを表示します。 ドロップダウンリストから関数を選択するには、矢印キーを使用して項目を強調表示し、[OK]をクリックして関数を式に追加します。
  • 可能なテーブルと列のドロップダウンリストから引数を選択するか、必要な値を入力して、関数に引数を指定します。

この便利なIntelliSense機能の使用を強くお勧めします。

DAX数式の使用場所

DAX数式を使用して、計算列と計算フィールドを作成できます。

  • 計算列でDAX数式を使用するには、列を追加してから数式バーに式を入力します。 これらの数式は、PowerPivotウィンドウで作成します。
  • 計算フィールドでDAX数式を使用できます。 あなたはこれらの式を作成します-
  • [計算フィールド]ダイアログボックスのExcelウィンドウ、または
  • テーブルの計算領域のPower Pivotウィンドウ。

同じ計算式が計算列または計算フィールドのどちらで使用されるかによって、同じ計算式の動作が異なります。

  • 計算列では、数式は常にテーブル全体の列のすべての行に適用されます。 行のコンテキストによっては、値が変わる場合があります。
  • ただし、計算フィールドでは、結果の計算はコンテキストに大きく依存します。 つまり、ピボットテーブルの設計と行見出しと列見出しの選択は、計算で使用される値に影響します。

DAXの式を作成するには、DAXのコンテキストの概念を理解することが重要です。 これは、DAXの最初の段階では少し難しい場合がありますが、理解してしまえば、複雑で動的なデータ分析に必要な効果的なDAX式を作成できます。 詳細については、「DAXコンテキスト」の章を参照してください。

DAXフォーミュラの作成

前のセクションでIntelliSense機能について既に学習しました。 DAX数式を作成する際には、必ず使用してください。

DAX式を作成するには、次の手順を使用します-

  • 等号を入力します。
  • 等号の右側に、次を入力します-
  • 関数またはテーブル名の最初の文字を入力し、ドロップダウンリストから完全な名前を選択します。
  • 関数名を選択した場合は、括弧「(」を入力します。
  • テーブル名を選択した場合は、ブラケット「[」を入力します。 列名の最初の文字を入力し、ドロップダウンリストから完全な名前を選択します。
  • 列名を「]」で、関数名を「)」で閉じます。
  • 式の間にDAX演算子を入力するか、「、」を入力して、関数の引数を区切ります。
  • DAX数式が完了するまで、手順1〜5を繰り返します。

たとえば、東部地域の総売上高を検索するとします。 以下に示すように、DAX数式を作成できます。 East_Salesはテーブルの名前です。 金額は表の列です。

SUM ([East_Sales[Amount])

「DAX構文」の章で既に説明したように、任意の列名へのすべての参照で列名とともにテーブル名を使用することをお勧めします。 これは「完全修飾名」と呼ばれます。

DAXの式は、計算フィールド用か計算列用かによって異なります。 詳細については、以下のセクションを参照してください。

計算列のDAX数式の作成

PowerPivotウィンドウで計算列のDAX数式を作成できます。

  • 計算列を追加するテーブルのタブをクリックします。
  • リボンの[デザイン]タブをクリックします。
  • 追加をクリックします。
  • 数式バーに計算列のDAX数式を入力します。
= DIVIDE (East_Sales[Amount], East_Sales[Units])

このDAXの式は、テーブルEast_Salesのすべての行に対して次のことを行います-

  • 行の「金額」列の値を、同じ行の「単位」列の値で除算します。
  • 同じ行の新しく追加された列に結果を配置します。
  • テーブルのすべての行が完了するまで、手順1と2を繰り返します。

これらのユニットが上記の式で販売される単価の列を追加しました。

  • ご覧のとおり、計算列には計算と記憶領域も必要です。 したがって、必要な場合にのみ計算列を使用してください。 可能な限り十分な計算フィールドを使用します。

詳細については、「計算列」の章を参照してください。

計算フィールドのDAX数式の作成

ExcelウィンドウまたはPower Pivotウィンドウのいずれかで、計算フィールドのDAX数式を作成できます。 計算フィールドの場合、事前に名前を指定する必要があります。

  • Excelウィンドウで計算フィールドのDAX数式を作成するには、[計算フィールド]ダイアログボックスを使用します。
  • Power Pivotウィンドウで計算フィールドのDAX数式を作成するには、関連するテーブルの計算領域のセルをクリックします。 CalculatedFieldName:=でDAX数式を開始します。

たとえば、Total East Sales Amount:= SUM([East_Sales [Amount])

Excelウィンドウで[計算フィールド]ダイアログボックスを使用する場合は、保存する前に数式を確認し、正しい数式を使用するために必須の習慣にすることができます。

これらのオプションの詳細については、「計算フィールド」の章を参照してください。

数式バーを使用してDAX数式を作成する

Power Pivotウィンドウには、Excelウィンドウの数式バーに似た数式バーもあります。 数式バーを使用すると、オートコンプリート機能を使用して構文の作成と編集が簡単になり、構文エラーを最小限に抑えることができます。

  • テーブルの名前を入力するには、テーブルの名前の入力を開始します。 数式オートコンプリートは、それらの文字で始まる有効なテーブル名を含むドロップダウンリストを提供します。 必要に応じて、1文字から始めて、さらに文字を入力してリストを絞り込むことができます。
  • 列の名前を入力するには、選択したテーブルの列名のリストから列を選択できます。 テーブル名の右側にブラケット「[」を入力し、選択したテーブルの列のリストから列を選択します。

オートコンプリートを使用するためのヒント

以下は、オートコンプリートを使用するためのいくつかのヒントです-

  • DAX数式に関数と数式をネストできます。 このような場合、ネストされた関数を持つ既存の数式の途中で数式オートコンプリートを使用できます。 挿入ポイントの直前のテキストは、ドロップダウンリストに値を表示するために使用され、挿入ポイントの後のすべてのテキストは変更されません。
  • 定数用に作成した定義名は、オートコンプリートドロップダウンリストには表示されませんが、入力することはできます。
  • 関数の閉じ括弧は自動的に追加されません。 あなたは自分でそれをする必要があります。
  • 各関数が構文的に正しいことを確認する必要があります。

挿入機能機能について

Power PivotウィンドウとExcelウィンドウの両方に、 _ fx_ というラベルの付いた[関数の挿入]ボタンがあります。

  • Power Pivotウィンドウの[関数の挿入]ボタンは、数式バーの左側にあります。

  • Excelウィンドウの[関数の挿入]ボタンは、[式]の右側にある[計算フィールド]ダイアログボックスにあります。

    *_fx_* ボタンをクリックすると、[関数の挿入]ダイアログボックスが表示されます。 [関数の挿入]ダイアログボックスは、DAX数式に関連するDAX関数を見つける最も簡単な方法です。

[関数の挿入]ダイアログボックスでは、カテゴリごとに関数を選択でき、各関数の簡単な説明が表示されます。

挿入関数について

DAX数式で関数の挿入を使用する

あなたが次の計算フィールドを作成したいと仮定します-

Medal Count: = COUNTA (]Medal])

次の手順を使用して、[関数の挿入]ダイアログボックスを使用できます-

  • [結果]テーブルの計算領域をクリックします。
  • 数式バーに次のように入力します-
Medal Count: =
  • [関数の挿入]ボタン( fx )をクリックします。

関数の挿入ダイアログボックスが表示されます。

  • 次のスクリーンショットに示すように、[カテゴリの選択]ボックスで[統計]を選択します。
  • 次のスクリーンショットに示すように、[関数の選択]ボックスで[COUNTA]を選択します。

挿入関数の使用

ご覧のとおり、選択したDAX関数の構文と関数の説明が表示されます。 これにより、挿入する関数であることを確認できます。

  • OKをクリックしてください。 メダル数:= COUNTA(が数式バーに表示され、関数の構文を示すツールチップも表示されます。
  • タイプ[。 これは、列名を入力しようとしていることを意味します。 現在のテーブルのすべての列と計算フィールドの名前がドロップダウンリストに表示されます。 IntelliSenseを使用して式を完成できます。
  • タイプM ドロップダウンリストに表示される名前は、「M」で始まる名前に限定されます。
  • メダルをクリックします。

メダルをクリック

  • メダルをダブルクリックします。 メダル数:= COUNTA([メダル]は数式バーに表示されます。 括弧を閉じます。
  • Enterを押します。 これで終わりです。 同じ手順を使用して、計算列も作成できます。 関数の挿入機能を使用して、同じ手順に従って、Excelウィンドウの[計算フィールド]ダイアログボックスに関数を挿入することもできます。
  • [式]の右側にある[関数の挿入( fx )]ボタンをクリックします。

関数の挿入ダイアログボックスが表示されます。 残りの手順は上記と同じです。

DAX数式で複数の関数を使用する

DAX数式には、最大64個のネストされた関数を含めることができます。 ただし、DAXの数式にネストされた関数が非常に多く含まれていることはほとんどありません。

DAX式に多くのネストされた関数がある場合、次の欠点があります-

  • 数式を作成するのは非常に困難です。
  • 数式にエラーがある場合、デバッグするのは非常に困難です。
  • 式の評価はそれほど速くありません。

そのような場合、式をより小さな管理可能な式に分割し、大きな式をインクリメンタルに作成できます。

標準集計を使用したDAX数式の作成

データ分析を実行すると、集計データに対して計算が実行されます。 SUM、COUNT、MIN、MAX、DISTINCTCOUNTなど、いくつかのDAX集計関数があります。 DAX数式で使用できます。

Power PivotウィンドウのAutoSum機能を使用して、標準集計を使用して数式を自動的に作成できます。

  • [Power Pivot]ウィンドウの[結果]タブをクリックします。 結果表が表示されます。
  • [メダル]列をクリックします。 列全体–メダルが選択されます。
  • リボンの[ホーム]タブをクリックします。
  • [計算]グループの[自動合計]の横の下矢印をクリックします。

標準集計を使用したDAX数式の作成

  • ドロップダウンリストで[COUNT]をクリックします。

クリック数

ご覧のように、計算フィールドメダルの数は、列の下の計算領域–メダルに表示されます。 DAXの式は、式バーにも表示されます-

Count of Medal: = COUNTA([Medal])

AutoSum機能により作業が完了し、データ集計用の計算フィールドが作成されました。 さらに、AutoSumはDAX関数COUNTの適切なバリアントを採用しています。 COUNTA(DAXにはCOUNT、COUNTA、COUNTAX機能があります)。

注意事項-AutoSum機能を使用するには、リボンのAutoSumの横にある下矢印をクリックする必要があります。 代わりにAutoSum自体をクリックすると、次のようになります-

Sum of Medal: = SUM([Medal])

また、メダルは数値データ列ではなく、列のテキストを数値に変換できないため、エラーがフラグされます。

エラー

DAXエラーの詳細については、「* DAXエラーリファレンス*」の章を参照してください。

DAXの数式とリレーショナルモデル

ご存知のように、Power Pivotのデータモデルでは、複数のデータテーブルを操作し、関係を定義することでテーブルを接続できます。 これにより、関連するテーブル間の列の相関を計算に使用する興味深いDAX数式を作成できます。

2つのテーブル間にリレーションシップを作成する場合、キーとして使用される2つの列が、完全ではないにしても、少なくともほとんどの行で一致する値を持つことを確認する必要があります。 Power Pivotは参照整合性を強制しないため(詳細については次のセクションを参照)、Power Pivotデータモデルでは、キー列に一致しない値を保持して関係を作成することができます。 ただし、キー列に空白または一致しない値が存在すると、DAX数式の結果とピボットテーブルの外観に影響する場合があります。

参照整合性

参照整合性を確立するには、データを入力または削除するときにテーブル間の定義された関係を保持するための一連のルールを作成する必要があります。 これを排他的に保証しないと、Power Pivotが強制しないため、データ変更が行われる前に作成されたDAX数式で正しい結果が得られない場合があります。

参照整合性を強制する場合、次の落とし穴を防ぐことができます-

  • プライマリテーブルに関連する行がない場合に、関連するテーブルに行を追加する(つまり、 キー列の値が一致する場合)。
  • プライマリテーブルのデータを変更すると、関連テーブルに孤立した行が生じます(つまり、 キー列にデータ値があり、主テーブルのキー列に一致する値がない行。
  • 関連テーブルの行に一致するデータ値がある場合、プライマリテーブルから行を削除します。