計算列
適用対象: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
テーブル モデルの計算列を使用すると、モデルに新しいデータを追加できます。 列に値を貼り付けるかインポートする代わりに、列の行レベルの値を定義する DAX 数式を作成します。 すると、計算列を他のデータ列と同じように、レポート、ピボットテーブル、またはピボットグラフで使用できるようになります。
メリット
計算列の数式は、Excel での数式と非常によく似ています。 ただし、Excel とは異なり、テーブル内の異なる行に異なる数式を作成することはできません。代わりに列全体に自動的に DAX 数式が適用されます。
列に数式が含まれている場合は、各行について値が計算されます。 有効な数式を入力すると、その列に対する結果が計算されます。 基になるデータが更新された場合など、列の値は必要に応じて再計算されます。
メジャーおよび他の計算列に基づく計算列も作成できます。 たとえば、計算列を作成してテキストの文字列から数字を抽出し、その数字を別の計算列に使用することができます。
計算列は、既存テーブルに既に持っているデータに基づくか、または DAX 数式を使用して作成されます。 たとえば、他のフィールドの値に対して連結、加算、サブストリングの抽出、比較などを行うための計算列を作成できます。 計算列を追加するには、モデルにテーブルが 1 つ以上存在する必要があります。
計算列における簡単な数式を次の例に示します。
=EOMONTH([StartDate],0])
この数式では、StartDate 列から月を抽出します。 そして、テーブルの各行について月の最終日を計算します。 2 番目のパラメーターは、StartDate の月より前または後の月数を指定します。この場合、0 は同じ月であることを表します。 たとえば、StartDate 列の値が 6/1/2001 の場合、計算列の値は 6/30/2001 になります。
Naming a calculated column
既定では、新しい計算列はテーブル内のその他の列の右側に追加され、 CalculatedColumn1、 CalculatedColumn2などの既定の名前が自動的に割り当てられます。 列を右クリックしてから [列の挿入] をクリックして、2 つの既存列の間に新しい列を作成することもできます。 クリックしてドラッグすることで、同じテーブル内の列を並べ替えることができます。また、列の作成後に名前を変更することもできます。ただし、計算列の変更に対する次の制限事項に注意してください。
それぞれの列名は、1 つのテーブル内で一意である必要があります。
同じモデル内のメジャーに既に使用されている名前は使用しないでください。 メジャーと計算列を同じ名前にすることは可能ですが、名前が一意でないと計算エラーが発生することがあります。 誤ってメジャーが呼び出されないようにするために、列を参照するときは常に完全修飾列参照を使用してください。
計算列の名前を変更する場合、その列に依存する数式をすべて手動で更新する必要があります。 手動更新モードでない場合、数式の結果の更新は自動的に実行されます。 ただし、この処理には時間がかかることがあります。
列名に使用できない文字がいくつかあります。 詳しくは、「 DAX 構文の仕様」の「名前付けに関する要件」をご覧ください。
Performance of calculated columns
計算列で使用される数式は、メジャーで使用される数式よりリソースを大量に消費する可能性があります。 その理由の 1 つとして、計算列の結果が常にテーブルのすべての行を対象に計算されるのに対し、メジャーはレポート、ピボットテーブル、またはピボットグラフに使用されているフィルターで定義されたセルのみを対象として計算されることが挙げられます。 たとえば、テーブルに 100 万行含まれている場合、計算列には必ず 100 万個の結果が含まれるため、それだけパフォーマンスにも影響します。 ただし、ピボットテーブルでは、通常、行見出しおよび列見出しを適用してデータをフィルター処理します。したがって、メジャーは、ピボットテーブルの各セルに含まれているデータのサブセットのみを対象として計算されます。
数式は、値を評価する他の列や式など、数式で参照されるオブジェクトに依存しています。 たとえば、別の列に基づいている計算列、つまり列参照を使用する式を含む計算は、その別の列が評価されるまで評価することができません。 既定では、ブックで自動更新が有効になっています。したがって、値の更新時や数式の更新時にこうした依存関係すべてがパフォーマンスに影響する可能性があります。
計算列を作成するときにパフォーマンス上の問題を回避するには、次のガイドラインに従ってください。
複雑な依存性を多く含む 1 つの数式を作成するのではなく、結果を列に保存しながら段階的に計算を行う複数の数式を作成することで、結果を検証し、パフォーマンスを評価できるようにします。
データを変更すると、多くの場合は計算列を再計算する必要があります。 再計算が実行されないようにするには、再計算モードを手動に設定します。ただし、計算列の値が正しくない場合、データを更新して再計算するまで、その列はグレー表示されます。
テーブル間のリレーションシップを変更または削除すると、そのテーブル内の列を使用する数式が無効になります。
循環依存や自己参照依存を含む数式を作成した場合、エラーが発生します。