Power Pivot における DAX シナリオ

このセクションには、次のシナリオで DAX の数式を使用する例へのリンクが用意されています。

  • 複雑な計算の実行

  • テキストと日付の操作

  • 条件値とエラーのテスト

  • タイムインテリジェンスの使用

  • 値の順位付けと比較

この記事の内容

作業の開始

シナリオ: 複雑な計算の実行

ピボットテーブルにカスタム計算を作成する

式にフィルターを適用する

フィルターを選択的に削除して動的な比率を作成する

外部ループからの値の使用

シナリオ: テキストと日付の操作

連結によってキー列を作成する

テキストの日付から抽出した日付要素を基に日付を構成する

ユーザー定義の日付または数値の書式を定義する

数式を使用してデータ型を変更する

シナリオ: 条件値とエラーのテスト

条件に基づいて値を作成する

数式内のエラーをテストする

シナリオ: タイムインテリジェンスの使用

累積売上を計算する

値を時系列で比較する

ユーザー設定の日付範囲に対する値を計算する

シナリオ: 値の順位付けと比較

ピボットテーブルの上位10個のアイテムのみを表示する

数式を使用してアイテムを動的に並べ替える

クイックガイド

Dax リソースセンター Wikiにアクセスすれば、ブログ、サンプル、ホワイトペーパー、および業界の主要専門家と Microsoft によって提供されるビデオなど、dax に関するさまざまな情報を確認できます。

シナリオ: 複雑な計算の実行

DAX 数式では、カスタムの集計、フィルター処理、条件値の使用など、複雑な計算を実行できます。 このセクションでは、カスタム計算の使用を開始する方法の例を示します。

ピボットテーブルにカスタム計算を作成する

CALCULATE と CALCULATETABLE は、計算フィールドの定義に役立つ強力で柔軟な関数です。 これらの関数を使用すると、計算が実行されるコンテキストを変更できます。 また、実行する集計または算術演算の種類をカスタマイズすることもできます。 例については、次のトピックを参照してください。

式にフィルターを適用する

DAX 関数が引数としてテーブルを受け取るほとんどの場所では、通常、テーブル名の代わりに FILTER 関数を使用するか、関数の引数の1つとしてフィルター式を指定することで、フィルター処理されたテーブルを渡すことができます。 次のトピックでは、フィルターの作成方法と、フィルターが数式の結果に与える影響について例を示します。 詳細については、「 DAX の数式でデータをフィルター処理する」を参照してください。

FILTER 関数では、式を使用してフィルター条件を指定できます。その他の関数は、空白値の除外専用に設計されています。

フィルターを選択的に削除して動的な比率を作成する

数式に動的フィルターを作成すると、次のような質問に簡単に答えることができます。

  • 今年の売上合計に対する現在の製品の売上はどのようになっていますか?

  • 他の部門と比較して、この部門がすべての営業年度の総利益にどの程度貢献していますか?

ピボットテーブルで使用した数式は、ピボットテーブルのコンテキストによって影響を受ける可能性がありますが、フィルターを追加または削除することによって、コンテキストを選択的に変更できます。 「すべて」のトピックの例では、この方法について説明します。 すべての販売店の売上に対する特定の再販業者の売上の比率を計算するには、現在のコンテキストの値をすべてのコンテキストの値で割ったメジャーを作成します。

ALLEXCEPT トピックには、数式でフィルターを選択的にクリアする方法の例が用意されています。 どちらの例でも、ピボットテーブルのデザインによって結果がどのように変化するかについて説明します。

比率とパーセンテージを計算する方法のその他の例については、次のトピックを参照してください。

外部ループからの値の使用

DAX では、現在のコンテキストの値を計算で使うことに加えて、関連する一連の計算を作成するときに、前のループの値を使うことができます。 次のトピックでは、外部ループから値を参照する数式を作成する方法のチュートリアルを紹介します。 以前の関数は、最大2レベルの入れ子になったループをサポートします。

行のコンテキストと関連テーブルの詳細、および数式でこの概念を使用する方法について詳しくは、「 DAX の数式のコンテキスト」をご覧ください。

シナリオ: テキストと日付の操作

このセクションには、テキストの操作、日付と時刻の値の抽出と作成、条件に基づいて値を作成する一般的なシナリオの例を含む DAX リファレンストピックへのリンクが用意されています。

連結によってキー列を作成する

PowerPivot では複合キーは許可されません。そのため、データソース内に複合キーがある場合は、それらを1つのキー列に結合する必要があります。 次のトピックでは、複合キーに基づいて計算列を作成する方法の1つの例を示します。

テキストの日付から抽出した日付要素を基に日付を構成する

PowerPivot は、日付/時刻データ型を使用して日付を操作します。したがって、たとえば、日付が PowerPivot データエンジンによって認識されない地域の日付形式で記述されている場合や、データで整数の代理キーを使用している場合、または、データで日付の部分を抽出して、その部分を有効な日付/時刻表現に構成することが必要な場合があります。

たとえば、整数として表示されていて、テキスト文字列としてインポートされた日付の列がある場合は、次の数式を使用して、文字列を日付/時刻値に変換できます。

= DATE (RIGHT ([Value1], 4), LEFT ([value1], 2), MID ([Value1], 2))

値 1

計算結果

01032009

1/3/2009

12132008

12/13/2008

06252007

6/25/2007

次のトピックでは、日付の抽出と作成に使用する関数について詳しく説明します。

ユーザー定義の日付または数値の書式を定義する

データに、標準の Windows テキスト形式では表現されない日付または数値が含まれている場合は、カスタム書式を定義して、値が正しく処理されるようにすることができます。 これらの形式は、値を文字列に、または文字列から変換するときに使用されます。 次のトピックでは、日付と数値の操作に使用できる事前定義された書式の詳細な一覧も提供しています。

数式を使用してデータ型を変更する

PowerPivotでは、出力のデータ型はソース列によって決定され、最適なデータ型は PowerPivotによって決定されるため、結果のデータ型を明示的に指定することはできません。 ただし、 PowerPivot によって実行される暗黙的なデータ型変換を使って、出力データ型を操作することができます。 

  • 日付または数値文字列を数値に変換するには、1.0 を乗算します。 たとえば、次の数式は、現在の日付から3日を差し引いた値を計算し、それに対応する整数値を出力します。

    = (TODAY ()-3) * 1.0

  • 日付、数値、または通貨の値を文字列に変換するには、値を空の文字列に連結します。 たとえば、次の数式は、今日の日付を文字列として返します。

    = "" & TODAY ()

次の関数を使って、特定のデータ型が返されるようにすることもできます。

実数を整数に変換する

シナリオ: 条件値とエラーのテスト

Excel と同様に、DAX には、データ内の値をテストし、条件に基づいて別の値を返すための関数が用意されています。 たとえば、年額の売上金額に応じて、再販業者に "優先" または "" としてラベル付けする集計列を作成できます。 値をテストする関数は、値の範囲または種類を確認するのにも役立ち、予期しないデータエラーによる計算の中断を防ぐために役立ちます。

条件に基づいて値を作成する

入れ子になった IF 条件を使って、値をテストし、新しい値を作成することができます。 次のトピックでは、条件付き処理と条件値の簡単な例を示します。

数式内のエラーをテストする

Excel とは異なり、集計列の1つの行に有効な値を指定することはできません。また、別の行に無効な値を指定することもできません。 つまり、 PowerPivot 列のいずれかの部分にエラーがある場合、列全体にエラーのフラグが付けられます。そのため、無効な値になる数式エラーを常に修正する必要があります。

たとえば、ゼロで除算した数式を作成すると、無限大の結果やエラーが表示されることがあります。 数式によっては、数値が想定されているときに空白値が検出された場合にもエラーが発生します。 データモデルを開発しているときには、メッセージをクリックして問題のトラブルシューティングを行うことができるように、エラーを表示することをお勧めします。 ただし、ブックを公開する場合は、予期しない値による計算の失敗を防ぐために、エラー処理を組み込む必要があります。

集計列でエラーが返されないようにするには、論理関数と情報関数の組み合わせを使用してエラーのテストを行い、常に有効な値を返します。 次のトピックでは、DAX でこれを実行する方法の簡単な例をいくつか紹介します。

シナリオ: タイムインテリジェンスの使用

DAX タイムインテリジェンス関数には、データから日付や日付範囲を取得するための関数が含まれています。 これらの日付または日付範囲を使用して、類似する期間の値を計算することができます。 タイムインテリジェンス機能には、標準的な日付間隔で機能する関数も含まれています。これにより、月単位、年単位、または四半期間の値を比較できます。 また、指定した期間の最初の日付と最後の日付の値を比較する数式を作成することもできます。

タイムインテリジェンス関数の一覧については、「タイムインテリジェンス関数 (DAX)」をご覧ください。 PowerPivot 分析で日付と時刻を効果的に使用する方法に関するヒントについては、「 powerpivot での日付」を参照してください。

累積売上を計算する

次のトピックでは、決算残高と期首残高を計算する方法の例を示します。 例を使用すると、日数、月数、四半期、年など、さまざまな期間にわたって残高を作成できます。

値を時系列で比較する

次のトピックでは、さまざまな期間にわたる合計を比較する方法の例を示します。 DAX でサポートされる既定の期間は月、四半期、年です。

ユーザー設定の日付範囲に対する値を計算する

セールスプロモーションの開始後15日目など、カスタムの日付範囲を取得する方法の例については、次のトピックを参照してください。

タイムインテリジェンス関数を使って、ユーザー設定の一連の日付を取得する場合は、その日付のセットを計算を実行する関数への入力として使用して、一定期間にわたってユーザー設定の集計を作成することができます。 この方法の例については、次のトピックを参照してください。

  • Parallelperiod 関数

    注: ユーザー設定の日付範囲を指定する必要がなく、月、四半期、年など標準の会計単位を使用している場合は、この目的に合わせて設計されたタイムインテリジェンス関数 (TOTALQTD、TOTALMTD、TOTALQTD など) を使用して計算を実行することをお勧めします。

シナリオ: 値の順位付けと比較

列またはピボットテーブルの上位 n 個のアイテムのみを表示するには、いくつかのオプションがあります。

  • Excel 2010 の機能を使用して、トップフィルターを作成できます。 ピボットテーブルの上位または下位の値の数を選択することもできます。 このセクションの最初の部分では、ピボットテーブルの上位10個のアイテムをフィルター処理する方法について説明します。 詳細については、Excel のドキュメントを参照してください。

  • 値を動的にランク付けする数式を作成し、その後で順位値に基づいてフィルターを適用するか、または、ランク付け値をスライサーとして使用することができます。 このセクションの2番目の部分では、この数式を作成し、そのランク付けをスライサーで使用する方法について説明します。

各方法には長所と短所があります。

  • Excel のトップフィルターは簡単に使用できますが、フィルターは表示専用です。 ピボットテーブルの基になるデータが変更された場合は、ピボットテーブルを手動で更新して変更を確認する必要があります。 ランク付けを動的に操作する必要がある場合は、DAX を使用して、列内の他の値と値を比較する数式を作成できます。

  • DAX 数式はさらに強力です。さらに、ランク付け値をスライサーに追加することで、スライサーをクリックするだけで、表示されるトップ値の数を変更することができます。 ただし、計算は負荷が高いため、このメソッドは、多くの行を含むテーブルには適していない可能性があります。

ピボットテーブルの上位10個のアイテムのみを表示する

ピボットテーブルの上位または下位の値を表示するには

  1. ピボットテーブルで、[行ラベル] 見出しの下矢印をクリックします。

  2. [値フィルター ]>トップテン] を選びます。

  3. [トップテンフィルター <列名> ] ダイアログボックスで、次のように順位付けする列と値の数を選びます。

    1. [] を選択すると、最も大きい値のセルが表示されます。また、にある場合は、最小値のセルが表示されます。

    2. 表示する上位または下位の値の数を入力します。 既定値は10です。

    3. 値の表示方法を選択します。

名前

説明

アイテム

ピボットテーブルをフィルター処理して上位または下位のアイテムの一覧のみが表示されるようにするには、このオプションを選択します。

割合

ピボットテーブルをフィルター処理して、指定したパーセンテージまで追加したアイテムのみを表示するには、このオプションを選択します。

合計

上位または下位のアイテムの値の合計を表示するには、このオプションを選択します。

  1. 順位付けする値が格納されている列を選択します。

  2. [OK] をクリックします。

数式を使用してアイテムを動的に並べ替える

次のトピックでは、DAX を使って、集計列に格納されているランク付けを作成する方法の例を示します。 DAX 数式は動的に計算されるため、基になるデータが変更された場合でも、常にランクが正しいことを確認できます。 また、数式が計算列で使用されるため、スライサーでランク付けを使用して、トップ5、上位10、またはトップ100の値を選ぶことができます。

注:  このページは、自動翻訳によって翻訳されているため、文章校正のエラーや不正確な情報が含まれている可能性があります。 私たちの目的は、このコンテンツがお客様の役に立つようにすることです。 情報が役に立ったかどうか、ご意見をお寄せください。 参考までに、こちらから英語の記事をお読みいただけます。

ヘルプを表示

Office のスキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×