集計列を使用すると、データ モデル内のテーブルに新しいデータ PowerPivot 追加できます。 列に値を貼り付けまたはインポートする代わりに、列の値を定義する Data Analysis Expressions (DAX)数式を作成します。
たとえば、factSales テーブルの各行に売上利益の値を追加 する必要がある場合 。 新しい集計列を追加し、数式 =[SalesAmount]-[TotalCost]–[ReturnAmount]を使用して、SalesAmount 列の各行の値から TotalCost 列と ReturnAmount 列の各行から値を減算することで、新しい値が計算されます。 その後、[利益] 列は、他の列と同様ピボットグラフ、またはPower Viewレポートで使用できます。
この図は、計算列を表す PowerPivot。
注: 計算列とメジャーは数式に依存しますが、それぞれ異なっています。 メジャーは、多くの場合、ピボットテーブルやピボットグラフの [値] 領域で使用されます。 計算結果をピボットテーブルの別の領域 (ピボットテーブルの列や行など) や ピボットグラフ の軸に配置する場合は、計算列を使用します。 メジャーの詳細については「PowerPivot のメジャー」を参照してください。
計算列について
集計列の数式は、集計列で作成する数式と似Excel。 ただし、テーブル内の行ごとに異なる数式を作成することはできません。 DAX 数式は列全体に自動的に適用されます。
列に数式が含まれている場合は、各行について値が計算されます。 数式を入力するとすぐに、その列に対する結果が計算されます。 基になるデータが更新された場合など、列の値は必要に応じて再計算されます。
メジャーや他の集計列に従って、計算列を作成できます。 たとえば、1 つの計算列を作成して文字列から数字を抽出し、その数字を別の計算列で使うことができます。
例
既存のテーブルに追加したデータを含む集計列をサポートできます。 たとえば、値の連結、追加の実行、部分文字列の抽出、他のフィールドの値との比較などから選べます。 集計列を追加するには、 に少なくとも 1 つのテーブルが既に存在 PowerPivot。
次の数式を参照してください。
=EOMONTH([StartDate],0])
Contoso サンプル データを使用して、この数式はプロモーション テーブルの StartDate 列から月を抽出します。 次に、プロモーション テーブルの各行の月末の値を計算します。 2 番目のパラメーターは、StartDate の月の前または後の月数を指定します。この場合、0 は同じ月を意味します。 たとえば、StartDate 列の値が 2001/6/1 の場合、集計列の値は 2001/6/30 になります。
計算列の名前付け
既定では、新しい集計列が他の列の右側に追加され、列には既定の名前である CalculatedColumn1、CalculatedColumn2が自動的に割り当てられます。 列を作成した後は、必要に応じて列の並べ替えや名前変更を行います。
計算列の変更にはいくつかの制限があります。
-
それぞれの列名は、1 つのテーブル内で一意である必要があります。
-
同じブック内のメジャーに使用されている名前は使わないでください。 メジャーと計算列を同じ名前にすることはできますが、名前が一意でないと計算エラーが起きやすくなります。 誤ってメジャーを呼び出すのを避けるために、列を参照するときに必ず完全修飾列参照を使用します。
-
集計列の名前を変更する場合は、既存の列に依存する数式も更新する必要があります。 手動更新モードの場合を限り、数式の結果の更新は自動的に行われます。 ただし、この処理には時間がかかることがあります。
-
列名をはじめ、PowerPivot の他のオブジェクトの名前には、使用できない文字もあります。 詳細については、「Power Pivot の DAX 構文仕様」の「名前付けの要件」 を参照してください。
既存の集計列の名前を変更または編集するには:
|
データ型の変更
他の列のデータ型を変更するのと同じ方法で、集計列のデータ型を変更できます。 テキスト型から 10 進型、整数型、通貨型、および日付型への変更はできません。 テキスト型からブール型へは変更できます。
計算列のパフォーマンス
計算列で使用される数式は、メジャーで使用される数式よりリソースを大量に消費する可能性があります。 その理由の 1 つとして、計算列の結果が常にテーブルのすべての行を対象に計算されるのに対し、メジャーはピボットテーブルまたはピボットグラフに使用されているセルのみを対象として計算されることが挙げられます。
たとえば、行数が 100 万のテーブルには、常に 100 万件の結果を含む計算列と、それに対応するパフォーマンスへの影響があります。 ただし、ピボットテーブルは通常、行見出しと列見出しを適用してデータをフィルター処理します。 つまり、メジャーはピボットテーブルの各セルのデータのサブセットについてのみ計算されます。
数式には、値を評価する他の列や式など、数式内のオブジェクト参照に依存します。 たとえば、別の列に基づく計算列、または列参照を含む式を含む計算は、他の列が評価されるまで評価できません。 既定では、自動更新が有効になっています。 そのため、数式の依存関係がパフォーマンスに影響を与える可能性があります。
計算列を作成するときにパフォーマンス上の問題を回避するには、次のガイドラインに従ってください。
-
多くの複雑な依存関係を含む 1 つの数式を作成するのではなく、結果を列に保存してステップで数式を作成し、結果を検証し、パフォーマンスの変化を評価できます。
-
データを変更すると、多くの場合、計算列の更新が誘発されます。 これを防ぐには、再計算モードを手動に設定します。 ただし、計算列の値が正しくない場合、データを更新して再計算するまで列は無効になります。
-
テーブル間のリレーションシップを変更または削除すると、そのテーブル内の列を使用する数式が無効になります。
-
循環依存や自己参照依存を含む数式を作成した場合、エラーが発生します。
タスク
計算列の操作の詳細については、「集計列を作成 する」を参照してください。