今回は前回の内容に従って、カレンダーテーブルを実際に作成してみましょう!
カレンダーテーブルを作成する時にDAX(エクセルのワークシート関数のようなもの)も使用します
元のデータはこちらの3つのテーブルになります

ですので当初のリレーションはこのようになっています

こちらにカレンダーテーブルを組み込む形になります
目次
新しいテーブルの作成
カレンダーテーブルの作成は最初、こちらをクリックするところから始まります

すると数式が入力できるようになります

左辺をCalendarとし、右辺にCaを入力すると、入力するDAXの候補がでてきます

こちらの候補から「CALENDAR」をTabキーで選択してください
CALENDAR()の〇括弧:()の中には、連続した日付を作成する際の開始日と終了日を指定します

YEAR/年とMONTH/月の列の作成
連続した日付データができたので、今度は日付データを使用してYEARとMONTHの列を作成します

上の画像の「新しい列」をクリック後、まずはYEARの列を作成します

YEARの列を作成するにはDAX「YEAR」を指定します
その際に、コツが一つあります

丸括弧:()の中で’を指定すると()中に入れる列名の候補が選択できます
今回は’Calendar[Date]の列を指定して、日付列(2021/04/01⇒2021)を年に変換して列を作成します

今、DAX:YEARをして列を作成しましたが、通常のエクセルのワークシート関数を使用した時との違いは、セルではなく列単位で関数を使用しているという点です
MONTHの列もYEARの列と同様に作成します

会計年度の調整
前回も触れましたが、3月決算の場合には会計年度を調整する必要があります
例えば、2022年1月の場合には、上記のYEAR関数で作成した列には「2022」と表示されます

ただ実際には会計年度は2022から1を引いた「2021」になります
ですので、MONTH列をもとにしてIF関数により1月~3月の会計年度を調整します
if(MONTH([Date])<4,YEAR([Date])-1,YEAR([Date]))

ちなみに四半期の列を作成するQUARTER関数を使用すると次のようになります

4月が第2QUARTERとなります
これは12月決算をもとにしてDAXが作成されているからです
この場合も3月決算にあわせてIF関数を使用します
IF(MONTH([Date])<4,4,if(MONTH([Date])<7,1,IF(MONTH([Date])<10,2,3))

リレーションシップの作成
カレンダーテーブルをひとまず、形にはしました
これだけでは、カレンダーテーブルを活用することはできません
他のテーブルとリレーションシップを作成・紐づけを行う必要があります

リレーションシップを作成するには、以下の画面で操作が必要です

こちらの画面で売上データの「日付データ」とカレンダーテーブルの「Date」を紐づけます

操作はいたって簡単です

該当する列の上でドラックをするだけです
これで下の画像のようなリレーション(売上データ:多⇒Calendar:1)が完成します

これで売上データとカレンダーテーブルを一緒に活用できるようになりました
では、レポート画面で「マトリックス」を作成してみましょう

マトリックスの行にカレンダーテーブルの「YEAR」を配置します

YEARの配置もドラックで行います

そしてマトリックスの値に売上データの売上金額を配置します

すると上記の画像のように「年」毎に売上金額の合計が算出されています
これはカレンダーテーブルと「多:1」の紐づけが行われているからです
では試しに、リレーションを消してみます

すると、以下のように2021年も2022年も同じ金額になってしまいます

これは、年ごとの多:1の紐づけが行われないまま、単純に売上金額の合計が算出されるからです
<まとめ>
今回はカレンダーテーブル自体を作成しました
エクセルと違い、テーブルも列も一から作る点がとても斬新だと思います
ただ、これだけだとまだ実用的なカレンダーテーブルとはいえません
次回、調整を加えていきたいと思います
コメントを残す