メイン コンテンツへスキップ
サポート
Microsoft アカウントでサインイン
サインインまたはアカウントを作成してください。
こんにちは、
別のアカウントを選択してください。
複数のアカウントがあります
サインインに使用するアカウントを選択してください。

このセクションでは、次のシナリオで DAX 数式を使用する例へのリンクを示します。

  • 複雑な計算の実行

  • テキストと日付を操作する

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

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

  • 値のランク付けと比較

この記事の内容

作業の開始

DAX リソース センター Wiki にアクセスすると、業界をリードするプロフェッショナルや Microsoft が提供するブログ、サンプル、ホワイト ペーパー、ビデオなど、DAX に関するさまざまな情報を見つけることができます。

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

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

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

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

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

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

FILTER 関数では式を使用してフィルター条件を指定できます。他の関数は、空白値をフィルター処理するように特別に設計されています。

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

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

  • その年の売上合計に対する現在の製品の売上の寄与度は何でしたか?

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

ピボットテーブルで使用する数式は、ピボットテーブルコンテキストの影響を受ける可能性がありますが、フィルターを追加または削除することでコンテキストを選択的に変更できます。 ALL トピックの例では、これを行う方法を示します。 すべてのリセラーの売上に対する特定のリセラーの売上の比率を確認するには、現在のコンテキストの値を ALL コンテキストの値で割った値を計算するメジャーを作成します。

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

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

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

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

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

シナリオ: テキストと日付を操作する

このセクションでは、テキストの操作、日付と時刻の値の抽出と作成、条件に基づく値の作成などの一般的なシナリオの例を含む DAX リファレンス トピックへのリンクを示します。

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

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

テキストの日付から抽出された日付部分に基づいて日付を作成する

PowerPivot では、日付SQL Serverデータ型を使用して日付を処理します。そのため、外部データに異なる形式の日付が含まれている場合 (たとえば、日付が PowerPivot データ エンジンによって認識されない地域の日付形式で書き込まれた場合、またはデータが整数代理キーを使用している場合など)、DAX 数式を使用して日付部分を抽出し、その部分を有効な日付/時刻表現に構成する必要がある場合があります。

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

=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 Power Pivot の日付に関する ページを参照してください

累積売上を計算する

次のトピックでは、終値と開始残高を計算する方法の例を示します。 この例では、日、月、四半期、年など、さまざまな間隔で実行中の残高を作成できます。

時間の間に値を比較する

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

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

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

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

  • PARALLELPERIOD 関数

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

シナリオ: 値のランク付けと比較

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

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

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

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

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

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

ピボットテーブルの上位 10 項目のみを表示する

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

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

  2. [値 フィルター] を>10 を選択します

  3. [ 上位 10 件のフィルター] <列名>] ダイアログ ボックスで、ランク付けする列と値の数を次のように選択します。

    1. [上]を選択して、値が最も高いセルを表示するか、[下] を選択して、値が最も低いセルを表示します。

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

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

名前

説明

アイテム

ピボットテーブルをフィルター処理して、上位または下位の項目の一覧のみを値で表示するには、このオプションを選択します。

割合

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

合計

このオプションを選択すると、上位または下位の項目の値の合計が表示されます。

  1. ランク付けする値を含む列を選択します。

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

数式を使用してアイテムを動的に順序付けする

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

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。

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

言語の品質にどの程度満足していますか?
どのような要因がお客様の操作性に影響しましたか?
[送信] を押すと、Microsoft の製品とサービスの改善にフィードバックが使用されます。 IT 管理者はこのデータを収集できます。 プライバシーに関する声明。

フィードバックをいただき、ありがとうございます。

×