計算列の作成
DAX 式を記述して、モデル内の任意のテーブルに "計算列" を追加できます。 計算列の数式では、スカラー値または単一の値を返す必要があります。
インポート モデルの計算列にはコストがかかります。モデルのストレージ サイズが増加し、データ更新時間が長くなる可能性があります。 その理由は、計算列では、更新されるテーブルに対して数式の依存関係がある場合、再計算が行われるためです。
データ ビューの [フィールド] ペインで、Due Date テーブルが選択されていることを確認します。 計算列を作成する前に、まず Date 列の名前を Due Date に変更します。
これで、計算列を Due Date テーブルに追加できます。 計算列を作成するには、[テーブル ツール] コンテキスト リボンの [計算] グループ内から、[新しい列] を選択します。
数式バーに次の計算列定義を入力し、Enter を押します。
Due Fiscal Year =
"FY"
& YEAR('Due Date'[Due Date])
+ IF(
MONTH('Due Date'[Due Date]) > 6,
1
)
計算列の定義により、Due Fiscal Year 列が Due Date テーブルに追加されます。 次の手順では、Microsoft Power BI によって計算列の数式がどのように評価されるかを説明します。
- 加算演算子 (+) が、テキスト連結演算子 (&) の前に評価されます。
-
YEAR
DAX 関数からは、期日の年の整数値が返されます。 -
IF
DAX 関数からは、期日の月番号が 7-12 (7 月から 12 月) の場合はその値が返されます。それ以外の場合は、BLANK が返されます。 (たとえば、Adventure Works の会計年度は 7 月から 6 月であるため、暦年の最後の 6 か月では、会計年度として次の暦年が使用されます)。 -
IF
関数によって返された値に、年の値が追加されます。これは、値 1 または BLANK です。 値が BLANK の場合は、加算によって会計年度の値が生成されるように、暗黙的にゼロ (0) に変換されます。 - リテラル テキスト値
"FY"
が、暗黙的にテキストに変換された会計年度の値に連結されます。
次の定義を使用して、2 番目の計算列を追加します。
Due Fiscal Quarter =
'Due Date'[Due Fiscal Year] & " Q"
& IF(
MONTH('Due Date'[Due Date]) <= 3,
3,
IF(
MONTH('Due Date'[Due Date]) <= 6,
4,
IF(
MONTH('Due Date'[Due Date]) <= 9,
1,
2
)
)
)
計算列の定義により、Due Fiscal Quarter 列が Due Date テーブルに追加されます。
IF
関数からは四半期の数値 (第 1 四半期は 7 月から 9 月) が返され、結果が Due Fiscal Year 列の値およびリテラル テキスト Q
に連結されます。
次の定義を使用して、3 番目の計算列を追加します。
Due Month =
FORMAT('Due Date'[Due Date], "yyyy mmm")
計算列の定義により、Due Month 列が Due Date テーブルに追加されます。
FORMAT
DAX 関数により、書式指定文字列を使用して、Due Date 列の値がテキストに変換されます。 この例の書式指定文字列では、年と省略された月の名前を示すラベルが生成されます。
Note
ユーザー定義の日付および時刻形式が多数存在します。 詳しくは、「FORMAT 関数のカスタム日付と時刻の書式」をご覧ください。
次の定義を使用して、4 番目の計算列を追加します。
Due Full Date =
FORMAT('Due Date'[Due Date], "yyyy mmm, dd")
次の定義を使用して、5 番目の計算列を追加します。
MonthKey =
(YEAR('Due Date'[Due Date]) * 100) + MONTH('Due Date'[Due Date])
MonthKey 計算列では、期日の年に値 100 が乗算された後、期日の月の値が加算されます。 それにより、Due Month のテキスト値を時系列順に並べ替えるために使用できる数値が生成されます。
Due Date テーブルに 6 つの列があることを確認します。 最初の列は計算テーブルの作成時に追加されたもので、他の 5 つの列は計算列として追加されました。
Due Date テーブルの設計を完了するには、以下のことを行うことができます。
- Due Date 列で Due Full Date 列を並べ替えます。
- MonthKey 列で Due Month 列を並べ替えます。
- MonthKey 列を非表示にします。
- 次のレベルを持つ Fiscal という名前の階層を作成します。
- Due Fiscal Year
- Due Fiscal Quarter
- Due Month
- Due Full Date
- Due Date 列を使用して、Due Date テーブルを日付テーブルとしてマークします。