Tableau PrepでRunning Sum
Tableauで累計を求める場合、Tableau DesktopとTableau Prepでは異なる方法で対応する必要があります。
- Tableau Desktop
簡易表計算や表計算関数で累計を表現することが可能です。(今回の記事では割愛させて頂きます)
- Tableau Prep
Desktopのような便利な関数は用意されていないですが、Tableauのヘルプに「Prepの結合処理を使った累計の求め方」が紹介されています。
ただ、この内容はサンプルのとおりに作れば累計を表現できますが、それ以外のケースに当てはめようとするとなかなかうまくいかないといったことがありまして、今回の記事で補足できればと思います。
<参照先> How To Calculate RUNNING_SUM in Tableau Prep
(サンプルワークブックもこちらからダウンロードが可能です)
元記事の動作確認
まず、Tableauの記事の内容から確認したいと思います。サンプルスーパーストアのデータを使い、必要なカラムは以下となります。
・Order Date
・Sales
・Category
シンプルでわかりやすいサンプルデータです。(ExcelのSheet1)
このデータを使い、Prepでは以下のようにデータの処理を行っています。
1) 累計処理の流れ(図の上側)
・累計処理は元データを2分岐したものを結合する際に特殊な設定をすることで行います。(図の結合1)
・結合後のデータを集計します。(図の集計1)
2) 元データの流れ(図の下側)
・1)で分岐したクリーニング1のほうを利用しています。(元データから直接でも可)
3) 1)と2)を結合します。(図の結合2)
4) 不要なフィールドを削除して完成です。
もう少し、Prepの処理を見て行きます。
2つの分岐を結合させる”結合1”で、結合句で累計するグループのOrder Date(1日毎に足していく)に対して、「>=」 が設定されています。
青系色の処理(Sheet1の累計用)・・①、緑系色の処理(クリーニング1の元データ)・・② としたとき、 ② >= ① となります。
このような設定をすると、①Order Date以上の②Order Dateと結合されます。(逆に、②Order Date以下の①Order Dateと結合とも言えます)
実際の例でみると以下となります。4つの図を用意しました。
上2つの図が①のデータに対して、①の日付以上の②が結合されるイメージです。
(sheet1からの累計用のOrder Dateで、1/1と1/3をそれぞれクリックしたときのデータの状態が確認できます)
下2つが②のデータに対して、②の日付以下の①が結合されるイメージです。
(クリーニング1の元データのOrder Dateで、それぞれ1/1と1/3をクリックしたときのデータの状態が確認できます。累計処理はこちらを使います。)
それでは、次の集計のステップを見てみましょう。
先ほどの結合で、Order DateとCategoryのフィールドが2つになりますが、クリーニング1(②の緑側)のフィールドを使っています。
ここまできたら、あとは累計のデータ(集計1)と元のデータ(クリーニング1)を結合2で紐づけて、クリーニング3で余分なフィールドを削除したら完成です。
サンプルデータを試した感じは、特に違和感なくRUNNING SUMすることができたと思います。
それでは、次に一般的なスーパーストアでこれらを試してみましょう。
サンプルスーパーストアの例
以下はスーパーストアのサンプルデータにて、2022年の中部地方に絞ったデータを使用しています。
フィールドを「オーダー日」、「カテゴリ」、「売上」のみにする際、一度 集計しています。(集計3)
図の下側に結果のサマリーが表示されていますが、先ほどの例のようにきれいな分布にはなっていません。
しかし結果を見てみると、以下のように累計処理は成功していました。
設定を誤った例
冒頭のサンプルケースで集計1で誤ったほう(クリーニング1の元側ではなく、sheet1の累計用のほう)のフィールドを選択すると、以下のように思った結果が得られません。
また、集計のフィールドが正しくても結合句の向きを間違えると結果は思った形になりません。(逆の<=とした場合)
さらに、サンプルスーパーストアの例について1つ補足ですが、扱うデータは集計してから累計処理をするようにしましょう。
以下、集計した例と未集計の例を表示しています。集計しない場合、生データのレコード数が多い分だけ、結合対象が増えてレコードが無駄に増えてしまいます。このあと集計1で合計にすると誤った値が表示されます。
(正しい例のほうは冒頭に集計を入れて累計に必要なグループ化を行うことで不要なレコードが発生しておりません)
以上から、それぞれ設定を間違えないよう注意する必要があります。
Tableau Desktopには元々「簡易表計算」などが用意されていますが、ワークブック側で計算が増えるほどパフォーマンスに影響(動作が重たくなる)が出るため、事前のデータ処理の段階でできることは対応しておきましょう。
普段はなかなか使うことのない、結合句の設定変更(=以外の利用)ですが、動作を理解すると他への応用などにも使えると思いますので、ぜひ試してみてください。
以上、Tableau PrepでのRunning Sumについてご紹介させて頂きました。