このページでは、ADDCOLUMNS関数の機能と使い方を紹介。テーブルに列を追加する方法を記載します。
・使用する関数:ADDCOLUMNS
関数の概要と使用データの紹介
ADDCOLUMNS関数はテーブルに計算列を追加して新しいテーブルを作成することが可能なテーブル操作関数です。複数の列を追加することができます。
=ADDCOLUMNS(“テーブル”,”列名1”,”計算式1”,(”列名2”,”計算式2”,,,,))
複数の列を追記にするには、列名と計算式を追記していきます。
この記事では、MIcrosoftからダウンロードできる財務サンプルデータを使用してADDCOLUMNSを使用してみます。
ページ内の直接ダウンロードするからダウンロードできます。
ダウンロードしたExcelブックは、月ごとにSegment、Country、Product、Discount Band、Profitなどの財務関係のデータが入っています。テーブル名はfinancialsとします。
関数の基本的な使い方
ADDCOLUMNS関数はテーブル操作関数なので、レポートビューのモデリングタブ、新しいテーブルを選択します。
DAX式を入力することで、新しい列を追加したテーブルを新規作成することができます。
ADDCOLUMNS関数を使用してfinancialsテーブルの割引率(Discount rate)を計算してみます。
割引率の計算式は[Discounts] / [Gross Sales] *100 で計算しています。
テーブル名はfinancials2とします。
financials2 = ADDCOLUMNS(
financials,
"Discount rate",DIVIDE([Discounts],[Gross Sales])*100
)
financialsテーブルにDiscount rateという新しい列が追加されたfinancials2というテーブルを作成することができました。
補足:
financialsテーブルにもともとあったDiscount Bandと、計算したDiscount rateの関係。
0-4%がLow,5-9%はMedium,10-15%がHighとして登録されているようです。
上記の方法は、すでに存在するテーブルに対して、列を追加しているだけです。
あえて、ADDCOLUMNS関数を使用して新しいテーブルを作成する必要はないかもしれません。
新しい列の追加でも同様のことは可能です。
実践的な使い方
実際に使用する場合、参照するテーブルは実際に存在するテーブルではなく、テーブルを返す関数や別のテーブル操作関数に対して列を追加し、新しいテーブルを作成することが多いと思います。
=ADDCOLUMNS(“テーブル“,”列名1”,”計算式1”,(”列名2”,”計算式2”,,,,))
例えば下記のDAX式では、FILTER関数と組み合わせることで、[Country]がドイツ(Germany)のみのデータを抽出、そこに新しい列を追加した新しいテーブルを作成しています。
financials_Germany = ADDCOLUMNS(
FILTER(financials,[Country]="Germany"),
"Discount rate",DIVIDE([Discounts],[Gross Sales])*100
)
また、SUMMARIZE関数と組み合わせることで、グループ化したテーブルに対して計算列を追加することもできます。
financials_smm = ADDCOLUMNS(
SUMMARIZE(
financials,
financials[Country],
financials[Discount Band]
),
"Gross sales",CALCULATE(
SUM(financials[Gross Sales]),
ALLEXCEPT(financials,financials[Country],financials[Discount Band])),
"Discount",CALCULATE(
SUM(financials[Discounts]),
ALLEXCEPT(financials,financials[Country],financials[Discount Band]))
)
計算式で使用したALLEXCEPT関数の解説は下記を参照してみてください。
カレンダーテーブルを作成する際も、広く使われていることが多いです。
CALENDAR関数と組み合わせてカレンダーテーブルを作成する方法は下記の記事で紹介しています。
まとめ
- ADDCOLUMNS関数はテーブルに新しい列を追加して新規テーブルを作成。
- テーブルを返す関数や別のテーブル操作関数に対して列を追加し、新しいテーブルを作成することが一般的。