テクテク日記

テクテク=テクノロジー&一歩ずつ(テクテク)

計算グループ(Calculation Groups)の実践的な使い方

2023年10月のPower BI Desktopに、非常に嬉しい新機能が追加されました。その機能は「計算グループ(Calculation Groups)」であり、詳細については、以下のブログ記事をぜひご一読いただきたいと思います。

powerbi.microsoft.com

計算グループ自体、かなり前からPower BIで使えるようになっていましたが、外部ツールであるTabular Editor(トレーニングへ飛びます)を使用しないとPower BI Desktopで実装できなかったことがボトルネックとなり、知らない人も沢山いるのではと推測しています。ようやくPower BI Desktopに標準搭載されたということで、今後活用が広がっていくと予想できますので、今回は実務で使った場合にどのようなレポートが作れるかについて紹介したいと思います。

計算グループとは

計算グループは、Power BIにおいて通貨変換、期間比較、予算対実績分析など、さまざまなビジネス分析に活用できる機能です。計算グループという言葉を初めて聞く人に向けてわかりやすく説明すると、以下の例が参考になるかもしれません。

  • テーマ
    売上分析レポートを作成する必要があります
  • 分析用メジャー
    時系列分析が必要であり、日次(Daily)だけでなく以下のメジャーも必要
    • WTD(Week-to-Datte)
    • MTD(Month-to-Date)
    • VTD(Venture-to-Date: 観測期間の期初からの累積)
  • ベースメジャー(最初にSUMで計算されるシンプルなメジャー)
    • 総売上
    • 純売上
    • 売上粗利益
      という3つのベースメジャーから、上記各種条件を組み合わせて計算
  • 組み合わせ
    ベースメジャー(3つ)× 時系列メジャー(4つ: Daily, WTD, MTD, VTD)= 12個
    これだけでもかなり面倒な作業ですが、これに加えて例えば以下のような項目を追加する必要があった場合、更にメジャーを追加していく必要があり、ベースメジャーが増える程(例: 売上メジャーだけでなく、在庫メジャー等が追加された場合等)、メンテナンスが大変になってきます
    • 各数値の前週・前月・前年同期比(実額比)
    • 各数値の前週・前月・前年同期比(%比)

そこで開発されたのが計算グループであり、上記例で言うと、WTD、MTD、VTDを予め定義しておき、

  • その定義でベースメジャーを切り替えられる
  • Daily、WTD、MTD、VTDをスライサーとして活用する

といった使い方ができるようになります。

サンプルデータ

デモ用データはいつも通り、以下のようなシンプルなデータモデルを使用します。

  • ディメンション
    • dStore
    • dProduct
    • dCalendar
  • ファクト
    • Inv
    • Sales
  • データ鮮度
    • 直近3ヵ月
    • 売上はDailyデータ
    • 在庫はWeeklyデータ

このデータを使って、計算グループを使ったモデリング・レポート作成をやっていきます。

計算グループを作る

プレビュー機能ですので、まずは2023年10月版のPower BI Desktopがインストールされていることを確認し、オプション > グローバル > プレビュー機能より、「モデル エクスプローラーと計算グループの作成」を有効化にします。

Power BI Desktopを再起動し、モデルビューにいきます。

一番右側にモデルタブが出現しており、この一番下から「計算グループ」を見つけることができます。ここで、事前にベースメジャーを4つ作っておきます。

モデルビューへ戻り、計算グループを右クリック >「新しい計算グループ」

警告が出ますが、そのまま「はい」。暗黙的なメジャーについては、こちらをご参考くください。

この際、数式バーにカーソルが自動的に合わせられ、SELECTEDMEASURE関数が自動的に導入され、計算項目(Calculation Items)が表示されます。SELECTEDMEASUREは、ユーザーが選択したメジャーの結果を返すためのプレースホルダとして機能します

まだ何を説明しているのか理解しにくいと思いますので、続けて計算項目を追加していきます。

L7Day = 直近7日累積、という計算項目を追加します。なお、なぜALLEXCEPTを使用しているかについては、こちらの記事をご参考ください。

続けて、VTD(Venture-to-Date)= 初日からの累積(Running Total)、という計算項目を追加します。

最後に、WTD(Week-to-Date)=週次累積、という計算項目を追加します。

なお、最後の週次累積を計算するためには、日付テーブル(dCalendar)にWeekNumberという列があることが必須で、複数年に渡ってWTDを見る場合は、年+WeekNumberというコンビネーションで列を作る必要があります。

今回のサンプルは直近数ヵ月のみの数値ですので、便宜的にVALUESでWeekNumberをベースにWeekで見た場合のフィルターを有効にしています。

ここから以下のようにTI(Time Intelligenceの略)にリネームを行います。

マトリックスビジュアルを準備し、列にTIをドラッグしていき、値にSalesAmtを持っていくと、以下のようなシンプルなレポートを作ることができるようになります。
ここで留意すべき点は、列にTI(Time Intelligence)を適用するだけで、[SalesAmt]というベースメジャーが上記定義した各種計算方法で算出されていることです。ここで値を[SalesAmt]から[SalesQty]に変えてみます。以下の通り、定義済の各種計算方法を元に販売数量が返されました。

メジャーが自動的に切り替わる理由は、先述のSELECTMEASURE関数のおかげであり、ユーザーが選択したメジャーに対して、事前に定義された計算を適用することが計算グループの特徴です。したがって、計算グループはメジャーの数を削減し、さまざまなシナリオで非常に強力な機能となることが理解できます。

フィールド パラメーターとの併用

メジャーを手動で切り替えるのが面倒であるという人は、メジャーを自由に切替できるフィールド パラメーターと一緒に活用すると良いでしょう(フィールド パラメーターに関する解説はこちらより)。上述のマトリックスを少し変更して、TIをスライサーとして追加し、dCalender[Date]をX軸、[SalesQty]をY軸とすると積み上げチャートを作ると以下のようになります。

スライサーを変更すると、以下のように結果を返してくれます。

冒頭に見せたチャートとほぼ同じ動作となりました。ここで凡例にHolidayFlagという計算列を追加します。

すると、チャートの見栄えが良くなり、売上トレンドがより分かりやすくなりました。

ここからフィールド パラメーターを追加していきます。ここでは売上用メジャー(フローメジャー)だけを選択します。

  • モデリング > 新しいパラメーター > フィールド
  • 名前をMetricsに変更し、フィールドより3つのメジャーを追加
  • スライサーが追加されるので、チャートを選択し、Metrics列を列のY軸のSalesQtyと入れ替える
  • 各メジャー項目で切替が可能、かつ、時系列分析チャートから選択も可能に

これで自由に指標を切り替えて、時系列分析を行うことができるようになりました。

スライサーの順番を変更する

今回の例で設定したスライサーの既定の順番はアルファベット順となります。これは、序数(Ordinal)が全て-1になっているためであり、順番を変更するためには序数を変更する必要があります。

序数を変更するためには、モデルビューで計算グループをクリックし、プロパティより「計算アイテムの順序」から変更を行います。

これを行うことで序数に並び替え用の数字が入力されるようになり、あとは以下のように「列の並び替え」

計算グループとフィールド パラメーターの違い

ここまでお読みいただいた方は、おそらく計算グループとフィールド パラメーターが機能的に非常に似ていることに気付いたかと思います。

異なる切り口に切り替える

という機能はどちらも有しており、メジャー数を可能な限り少なくしてレポートのパフォーマンスを向上させたい場合は計算グループ、お手軽に分析の切り口を変えたい場合はフィールド パラメーター、といった使い方が良いでしょう。

違いがあまり見いだせない中で、顕著な違いが1つあります。それは、計算グループがスモール マルチプルをサポートしている一方、フィールド パラメーターはサポートしていないという点です。

説明をするため、ここで少し冗長なことをやっていきます。既に計算グループでTIという計算項目(計算グループ内の各種定義済項目)を作っていますが、フィールド パラメーター用に[SalesAmt]版だけ、もう一度メジャーを作っておきます。

これらをフィールド パラメーターとして設定します。

設定した後、データビューにてパラメーターの名前をTIと同じものに変更します。

ここで先ほどのチャートに戻り、TI_FPというフィールド パラメーターのパラメーターという列をビジュアルの「列の Y軸」と「スライサー」として設定する。

これにより、計算グループで[SalesAmt]を各種時系列計算を行うのと同じ効果を得ることができました。ここで、スモール マルチプル機能を使ってみます。

  • 計算グループの場合
  • フィールド パラメーターの場合

詳細は不明ですが、フィールド パラメーターではスモール マルチプルを使用できないようです。

Tabular Editorから計算アイテムを作る

っかくなので、参考までにTabular Editorから作成する方法も紹介します。Tabular Editorには無料版(Tabular Editor 2)と有料版(Tabular Editor 3)がありますが、無料版のTabular Editor 2を使って解説を行います。
TE2とTE3の違い

  • Tabular Editor 2をインストールする(参考記事
  • Power BI Desktopでセマンティックモデルを作る(上述モデル)
  • 外部ツールのタブからTabular Editorを立ち上げる
  • Tables > 右クリック > Create New > Calculation Group
  • Calculation Itemsを右クリック > New Calculation Item
  • New Calculation Groupをリネームし、追加されたNew Calculationという計算項目(Calculation Item)もリネームし、Power BI Desktopで作るのと同じくDAX式を入力していく
  • 全て定義した後、変更を保存
  • Power BI Desktopに戻ると、「今すぐ更新」をクリック

これにて、Tabular Editorからの更新が完了し、計算グループをPower BI Desktopで使えるようになります。なお、序数を変更する場合は下図のように行うことができます。

ちなみに、Tabular Editor 2でも3でも構いませんが、フォーマット機能(DAX Formatter使用)を使用すると、Power BI Desktopのほうにも反映されるようになります。Tabular Editorは高機能なテキストエディタであり、計算グループの作成に留まらず、Power BIのTabular Modelのあらゆる機能にアクセスできる唯一のツールです。そのため、Tabular Editorを十分に活用することで、セマンティックモデルの開発が簡便になるだけでなく、高度な機能設定やモデルマネジメントも容易に行えるでしょう。

モデルの複雑さによりますが、Power BI Desktopでの開発に慣れてきた段階で、Tabular Editorを活用することで開発効率が向上するでしょう。執筆時点では英語の情報しかありません、以下の『Tabular Editor Learn』も非常におすすめです。

tabulareditor.com

分析チャートの意味

計算グループの使い方や特徴について解説してきましたが、最後に分析の観点からチャートについて考えてみたいと思います(以下全て[SalesQty]=販売数量)。例えば直近7日累積数値(L7Day)は販売のトレンドが上向いているかどうか、販売トレンドをより滑らかに見たい場合に使用する指標となります。下記を見ると、2020年9月下旬を境に売上がピークアウトしており、その後の売れ行きが芳しくない状態が続いていることになります。

このトレンドは下図のDailyでも見ることは可能ですが、スムージングされていないため、即座な判定は難しいと言えます。

以下はWTDの動きですが、どの週で最も売れ行きが良かったか、その週ではHolidayが多かったか等についての情報を得ることができます。

最後はおまけ程度ですが、累積の動きを見ることで、勾配が急となっている期間で売れ行きが良かったことをざっくり見つけることが可能となります。

これまでの説明が理解されたと思いますが、次に異なる視点からの重要な要素を考える必要があります。実際、多くのビジネスでは数量だけではなく金額に基づいて意思決定を行うことが一般的です。例えば、売上数量が先週から1,000個から1,500個に増加したとしても、売上額が前週よりも減少していた場合、これは値引き販売が行われたことを示唆しています。したがって、実額ベースでの分析が非常に重要です。数量だけではなく、金額に着目することが、ビジネス上の判断において重要な要素となることがあります。

今回のデモデータを例にしますと、WTDの販売状況は数量ベースと金額ベースではかなり異なった様相であったことが分かります。

分析の基本ですが、1つの指標にのみ依存するのは避けるべきです。代わりに、複数の指標を組み合わせてトレンドやスナップショットを把握し、必要に応じて詳細に掘り下げることが非常に重要です。