タグ別アーカイブ: 累計

カレンダーテーブルの活用により、数字を時系列の軸で自由に集計するツアー

今回のシリーズ記事では、カレンダーテーブルを使用してデータを「前年データ」や「累計」などの時系列で簡単に整理し直す技術を解説したいと思います

カレンダーテーブルとは、売上データなどの日付が入ったデータをカレンダーのそれぞれの日付に割り当てて整理するためのテーブルです

カレンダーテーブル

このカレンダーテーブルが活用できるようになると、今までエクセルのワークシートで手動での転記処理に頼っていた「時系列でのデータの整理」が簡単にできるようになります

カレンダーテーブルの作成・準備

作成

ここまでの解説だと「カレンダーテーブルとはなんなのか?」が具体的にはよくわからないと思います

シンプルに言えば、まさにカレンダーのような連続した日付列を起点として作成されたデータテーブルです

この連続した日付データに年や月などを紐づけておき、売上データなどを時系列で括りなおせるようにします

リレーション

作成したカレンダーテーブルは、他テーブルとリレーション(紐づけ)を行って使用します

このリレーションを適切に行わないと、カレンダーテーブルを活用できません

会計年度の調整

日本の企業は大抵が3月決算です

ですから、1月~3月のデータは実際の年より前の年で会計年度が割り当てられます

この会計年度の調整を事前にカレンダーテーブルで行っておきます

メジャーの作成(前年比、累計など)

前年比や累計など、作成したカレンダーテーブルを活用して作成する数字はメジャーで作成します

エクセルを使用してきた感覚の延長だと、このメジャーというのはなかなか理解しがたいものです

何故なら、テーブルの列にメジャーで作成した数字はでてこないからです

これはメジャーで作成する前年比などの数字は穴埋め問題みたいなものだからです

穴埋め問題の答えは、あくまで前後の数字が決まってから答えが決まります

例えば、前年比ならば集計対象が2022年6月ということが決まってから2021年6月に対する前年比を算出することが決まります

このメジャーが穴埋め問題である点に慣れれば、後はDAXというPower BI(Power Pivot)独自の関数を使用して計算していくだけです

このDAXはワークシート関数と同じ感覚で使用できますが、文法が若干違うので注意が必要です

<まとめ>

数字を見ると時のツボは時系列で比較することです

私もこの辺の時系列のデータ整理はさんざん苦労しました

エクセルではどんなに頑張っても手動処理が入るからです

しかも、かなり気を遣うので疲れます

Power BIのカレンダーテーブルを活用して時系列でデータを自動整理する仕組みは、まさにPower BIの醍醐味といっても過言ではありません

ぜひ次回からの回でしっかりカレンダーテーブルを活用する技術を身につけましょう!

2回目:カレンダーテーブルを実際に作成する~カレンダーテーブルを活用するツアー~

3回目:カレンダーテーブルを実用的に調整する~カレンダーテーブルを活用するツアー~

4回目:前年の値や累計を使う~カレンダーテーブルを活用するツアー~

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

前年の値や累計値を自動計算する~カレンダーテーブルを活用するツアー~

今回はカレンダーテーブルを活用して、時系列に関わる計算を行っていきます

前回でカレンダーテーブルを活用する準備が完全に整った状態です

数字を語る時にかならず「比較」が必要となりますが、この比較を自動的に行えるようにしましょう!

今回から「メジャー」という仕組み使用します

このメジャーの仕組みはエクセルのワークシートにはない仕組みです

メジャーはテーブルでもなく列でもなく、?の箇所の数字を埋めてくれる仕組みです

あくまで前後の文脈が決まってから数字が計算されます

例えば、「今年の4月」の数字があったとしたら、前年の4月の数字を、「2021年」の数字があったとしたら「2020年」の数字を自動的に穴埋めする仕組みです

このメジャーをつかいこなせば、レポート作業は格段に効率化されます

前年の値を計算するメジャーを作成する

まずはメジャーをクリックしてみましょう!

画像に alt 属性が指定されていません。ファイル名: image.png

すると、下の画像のように数式を入力できるようになります

ここからはカレンダーテーブルを作成した時の要領で行えます

前年 = CALCULATE(SUM(‘売上データ'[売上金額]),DATEADD(‘Calendar'[Date],-1,YEAR))

これで、前年のメジャーが作成されました

このメジャーをマトリックスの「値」に配置してみます

すると、マトリックスの時系列の表示に合わせ、前年の値が埋められて表示されます

この前年の値の式はCALCULATE関数を基にして計算されます

前年 = CALCULATE(SUM(‘売上データ'[売上金額]),DATEADD(‘Calendar'[Date],-1,YEAR))

CALCULATE関数内では、SUM関数が使用されていますが、このSUM関数で売上金額の合計金額が算出されます

但し、売上金額を算出する際に「DATEADD関数」でフィルター処理が行われる仕組みです

ちなみにDATEADD関数の真ん中に「ー1」が指定されていますが、こちらをー2に指定すると前々年の数字が算出されます

仮にDATEADD関数の真ん中「ー1」のままで「YEAR」を「MONTH」に置き換えると前月の数字が算出されます

累計の値を算出するメジャーを作成する

今度は累計を算出するメジャーをTOTALYTD関数を使用して作成してみましょう

計算式は次の通りとなります

累計 = TOTALYTD(SUM(‘売上データ'[売上金額]),’Calendar'[Date])

実際にマトリックスに配置してみると、確かに月ごとの加算は行われています

但し、4月の累計値は4月の数字で開始されていません

これは、累計処理が1~12月を会計年度として処理されているからです

こちらを4月~翌年3月の仕様に変えてみます

こちらは、累計処理の終了基準を「3/31」で明確に示しています

これで累計処理が正しく行われます

前年比などの指標

前年比などの指標はクイックメジャーで簡単に作成することができます

クイックメジャーの中には様々な指標があらかじめ準備されています

試しに「差の割合」をクリックしてみます

すると、右のフィールドの値を左側の該当箇所にあてはめれば計算が行われるようになっています

数字を当てはめて「OK」ボタンを押せばメジャーが設定されます

新しく作成されたメジャーをマトリクスに配置すると次のようになります

「前年との相違は売上金額 %」となっていますが、こちらは変更することができます

「前年との相違は売上金額 %」を選択し、数式バーから変更します

<まとめ>

今回は前年の数字などの数字を算出するメジャーを作成しました

このメジャーを使用するとレポート作業の効率は格段に向上します

今回のシリーズでカレンダーテーブル活用に関する一連の必要事項を紹介しました

ぜひ、実際に手を動かしてものにしてみましょう!

最後に、「年」⇒「月」と階層を変えるドリルダウンの仕組みはとても便利ですので、こちらも有効活用しましょう

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

【M言語実践】グループ別に累計を集計する方法

過去2回の記事でM言語を実践的に活用する事例を紹介しました

この2回の記事で共通するのは「グループ毎に連番を付与」する技術を使用していることです

今回も「グループ毎に連番を付与」する技術を有効活用して、グループ毎に累計を集計します

M関数のList.FirstNと連番をうまく組み合わせれば、意外と簡単に行えます

ポイント

List.FirstNとは?

List.FirstNは指定されたリストから、指定した条件のリストを作成します

文法としては「=List.FirstN(リスト,条件)」と書きます

例えば、

=List.FirstN(リスト,1)とした場合は1個の値が含まれるリストを作成します

=List.FirstN(リスト,2)とした場合は2個の値が含まれるリストを作成します

このList.FirstN関数の第二引数の条件のところに、グループ別の連番を指定することで、累計の元となるリストを作成します

元データ

今回解説に使用する元データは、下の画像のデータです

こちらのデータのグループに、エディタ内で連番をまずは付与します

上記の画像のようにM関数/Table.AddIndexColumnの第一引数にした列/テーブルは、後でList.FirstN関数の第一引数にしますので削除せずに残しておいてください

List.FirstNによるリスト作成

元データに連番を付与したところで、Power Queryエディタ(以降、エディタ)上で、詳細/テーブルの受注金額をM関数の第一引数、連番を第二引数にしてカスタマイズ列を作成してみます

するときちんとリストが作成できています

では、作成されたリストの中味を見てみます

連番(東京)が1の時には、作成した行の値のみが含まれています

では、連番(東京)が2の時はどうでしょう?

1つ上の行の値と該当行の値がリストに含まれています

今度は、大阪の連番1の場合を見てみましょう!

きちんと大阪の1番目の値/1700000のみが含まれています

作成されたリストの合計

List.FirstNにて各行に作成されたリストは累計の元になるリストになります

最後の仕上げとして、こちらのリストをM関数/List.Sumで合計します

すると、下の画像のように累計が算出されます

<まとめ>

 今回は、M関数/List.FirstNとグループ別の連番を組み合わせて、グループ別の累計を集計しました

今回の集計には、行別のリストが度々登場します

画像に alt 属性が指定されていません。ファイル名: image-74.png

この辺りは、手を動かして直感的に理解していった方が習得が早いと思います

とにかく手を動かして身に付けていきましょう!
にほんブログ村