計算列

このトピックでは、DAX サンプル ブックのデータに基づいて計算列を作成する方法について説明し、数式を作成する際のオートコンプリートの使用に関する情報を示します。 数式の詳細については、「数式の作成」を参照してください。

計算列について

計算列は、既存の PowerPivot テーブルに追加する列です。 列に値を貼り付けるかインポートする代わりに、列値を定義する DAX 数式を作成します。 計算列は、他のデータ列と同じように、ピボットテーブル、ピボットグラフ、または Power View レポートで使用できます。

計算列の数式は、Excel で作成される数式とたいへんよく似ています。 ただし、Excel とは異なり、テーブル内の異なる行に異なる数式を作成することはできません。代わりに列全体に自動的に DAX 数式が適用されます。

列に数式が含まれている場合は、各行について値が計算されます。 数式を作成するとすぐに、その列に対する結果が計算されます。 基になるデータが更新された場合など、列の値は必要に応じて再計算されます。

メジャーおよび他の計算列に基づく計算列も作成できます。 たとえば、計算列を作成してテキストの文字列から数字を抽出し、その数字を別の計算列に使用することができます。

計算列の作成

計算列は、既存のテーブルに追加したデータに基づいて作成されます。 たとえば、他のフィールドの値に対して連結、加算、サブストリングの抽出、比較などを行うための計算列を作成できます。 計算列を追加するには、テーブルを 1 つ以上 PowerPivot ブックに追加しておく必要があります。

この例では、新しい計算列で使用する単純な数式を作成する、オートコンプリートの使用例を示しています。 数式は次のとおりです。

=EOMONTH([StartDate],0])

この数式は、DAX サンプル ブックにある Promotion テーブルの StartDate 列から月を抽出します。 そして、Promotion テーブルの各行について月の最終日を計算します。 2 番目のパラメーターは、StartDate の月より前または後の月数を指定します。この場合、0 は同じ月であることを表します。 たとえば、StartDate 列の値が 6/1/2001 の場合、計算列の値は 6/30/2001 になります。

サンプル ブックの詳細については、「PowerPivot のサンプル データの入手」を参照してください。

注意

Windows Vista および Windows 7 では、PowerPivot ウィンドウの機能をリボンから実行できます。このトピックではその手順について説明しています。 Windows XP では、同じ機能を一連のメニューから実行できます。 Windows XP を使用している場合、メニュー コマンドとリボン コマンドの対応については、「Windows XP の PowerPivot UI」を参照してください。

オートコンプリートを使用して計算列を作成するには

  1. PowerPivot ウィンドウで、Promotion テーブルを含むタブをクリックします。 場合によっては、この Promotion テーブルを含むタブを確認するために、表示されているタブの右側の下矢印をクリックする必要があります。

  2. PowerPivot ウィンドウの [デザイン] タブで、[列] グループにある [追加] をクリックします。

    右端の空白の列に対して [列の追加] が強調表示され、カーソルが数式バーに移動します。

  3. 等号を入力し、関数ボタン ([fx]) をクリックします。

  4. EOMONTH は日付と時刻の関数であるため、[カテゴリの選択] ボックスの一覧で [日付と時刻] をクリックします。

    [関数の挿入] ダイアログ ボックスで使用可能な DAX 関数は、カテゴリ別にグループ化されています。 [すべて] を選択すると、すべての使用可能な関数の一覧が表示されます。

    • Tab キーを押して、関数のカテゴリのボックスの一覧、関数のボックスの一覧、[OK] ボタン、[キャンセル] ボタンの間を移動します。

    • 上方向キーと下方向キーを押して、関数のカテゴリまたは個々の関数を選択します。

    • 各関数を選択すると、PowerPivot によって関数のヘルプ (必須の引数と省略可能な引数の説明や一覧など) が表示されます。

  5. [関数の選択] ボックスの一覧で [EOMONTH] をクリックして、[OK] をクリックします。

    数式バーが更新され、関数と左かっこが表示されます。カーソルが次の引数の入力位置に自動的に配置されます。

    =EOMONTH( 

    数式バーの下のツールヒントに、EOMONTH 関数には 2 つの引数 (最初の引数は日付、2 番目の引数は月を表す数値) が必要であることが示されます。

  6. 左角かっこ [ を入力し、現在のテーブルから列の一覧を表示します。

    ヒント: 列が別のテーブルにある場合は、その列が含まれるテーブルの名前の最初の数文字を入力し、一覧から完全修飾列名を選択します。

    この例では、一覧から [StartDate] を選択し、Tab キーを押します。

    列名が次のように数式に挿入されます。

    =EOMONTH ([StartDate]
  7. コンマ、値「3」、閉じかっこの順に入力します。

    最終的に、数式は次のようになります。

    =EOMONTH([StartDate], 0)
  8. Enter キーを押して数式を確定します。

    列全体に数式が設定され、行ごとに値が計算されます。

計算列の名前付け

既定では、新しい計算列はワークシート内のその他の列の右側に追加され、CalculatedColumn1、CalculatedColumn2 などの既定の名前が自動的に割り当てられます。 計算列は、作成後に位置と名前を変更できます。 計算列を変更する際には次の制約事項に注意してください。

  • それぞれの列名は、1 つのテーブル内で一意である必要があります。

  • 同じブック内のメジャーに使用されている名前は使用しないでください。 メジャーと計算列を同じ名前にすることは可能ですが、名前が一意でないと計算エラーが起きやすくなります。 誤ってメジャーが呼び出されないようにするために、列を参照するときは常に完全修飾列参照を使用してください。

  • 計算列の名前を変更する場合、その列に依存する数式をすべて更新する必要があります。 手動更新モードでない場合、数式の結果の更新は自動的に実行されます。 ただし、この処理には時間がかかることがあります。

  • 列名をはじめ、PowerPivot ブック内のオブジェクトの名前には、使用できない文字もあります。 詳細については、「PowerPivot の DAX 構文の仕様」の「名前付けに関する要件」を参照してください。

既存の計算列を名前変更または編集するには

  1. [PowerPivot] ウィンドウで、名前を変更する計算列の見出しを右クリックして、[列名の変更] をクリックします。

  2. 新しい名前を入力し、Enter キーを押して新しい名前を受け入れます。

データ型の変更

計算列のデータ型は、非計算列のデータ型の場合と同じ方法で変更できます。 テキスト型から 10 進型、整数型、通貨型、および日付型への変更は行うことができません。 テキスト型からブール型への変更は可能です。

計算列のパフォーマンスについて

計算列で使用される数式は、メジャーで使用される数式よりリソースを大量に消費する可能性があります。 その理由の 1 つとして、計算列の結果が常にテーブルのすべての行を対象に計算されるのに対し、メジャーはピボットテーブルまたはピボットグラフに使用されているセルのみを対象として計算されることが挙げられます。

たとえば、テーブルに 100 万行含まれている場合、計算列には必ず 100 万個の結果が含まれるため、それだけパフォーマンスにも影響します。 ただし、ピボットテーブルでは、通常、行見出しおよび列見出しを適用してデータをフィルター処理します。したがって、メジャーは、ピボットテーブルの各セルに含まれているデータのサブセットのみを対象として計算されます。

数式は、値を評価する他の列や式など、数式で参照されるオブジェクトに依存しています。 たとえば、別の列に基づいている計算列、つまり列参照を使用する式を含む計算は、その別の列が評価されるまで評価することができません。 既定では、ブックで自動更新が有効になっています。したがって、値の更新時や数式の更新時にこうした依存関係すべてがパフォーマンスに影響する可能性があります。

計算列を作成するときにパフォーマンス上の問題を回避するには、次のガイドラインに従ってください。

  • 複雑な依存性を多く含む 1 つの数式を作成するのではなく、結果を列に保存しながら段階的に計算を行う複数の数式を作成することで、結果を検証し、パフォーマンスを評価できるようにします。

  • データを変更すると、多くの場合は計算列を再計算する必要があります。 再計算が実行されないようにするには、再計算モードを手動に設定します。ただし、計算列の値が正しくない場合、データを更新して再計算するまで、その列はグレー表示されます。

  • テーブル間のリレーションシップを変更または削除すると、そのテーブル内の列を使用する数式が無効になります。

  • 循環依存や自己参照依存を含む数式を作成した場合、エラーが発生します。

関連項目

概念

レポート、グラフ、およびピボットテーブルへの計算の追加

数式の作成

Data Analysis Expressions (DAX) の概要

数式での集計

その他の技術情報

テーブル間のリレーションシップ