見出し画像

Tableauの超基本 #2:集計とは?

Tableauの使い方を調べていくと、いろいろなところで「集計」「非集計」という単語が出てくると思います。
大量のデータを素早く理解する(or だれかに理解させる)ために、必ず使われる機能です。

ここでは、集計とは?を確認したうえで、集計の単位(粒度)、集計計算と非集計計算の違い の2つを見ていこうと思います

計算フィールドでこんなエラーが出ることも少なくない




集計とは:複数行のデータの集まりから、「代表」を作る

集計は、Tableauに限らず、データを扱う時に頻繁に行われています。
いちばんわかりやすいのは「合計」でしょうか。

ここでは「複数行のデータをまとめる(束ねる)とき、その代表になる値を1個決める」という言い方にします。
合計のほかにも、平均、最大値など、集計の方法は色々あります

集計とは:データのまとまりを代表する値を決める
(文字列にも集計の概念はある)


Tableauでも、何かメジャーを列や行に置いたとき、1本の棒グラフになりますが、元データが1行しかない訳ではないですよね。

裏側で、Tableauがたくさんの行データを読み、合計を計算・表示してくれています。(どんな集計をしたかも表示されています)

値をビューに入れると集計される
デフォルトは合計、集計方法は変更できる


この「集計」の概念を踏まえ、
ここからは基本的なTableauの仕組みを2点押さえたいと思います。

 a ビューに表示される集計単位(viz LOD = 見た目の粒度)はどうきまるか
 b 計算と集計の関連性(集計 vs 非集計)



a. 粒度の話:データのまとまりをどんな単位にするか?Tableauで表示されている単位  viz LOD

では、まず、
「集計」をどの単位で行うか?
言い換えると、データのまとまりを何ごとに設定するか? を考えることにします。

さきほどの売上棒グラフ1本は、全体の合計でしたが、これを何かの「切り口」で分けると、それぞれの集計結果が表示されます

「#1 行と列」では、出荷モードを列に入れて棒グラフを分割ました。
これは、集計を出荷モードごとに行った(集計単位に出荷モードを追加した)ことになります

「出荷モード」で棒グラフをヨコ方向(列)に分割

「出荷モード」集計結果の分割は列以外でも分けることができます。
「マーク」のなかにある、色・サイズ・ラベル・詳細 に入れると、それぞれ違った表現方法(視覚属性)ですが、同様に集計単位をコントロールすることができます。

色、サイズ、ラベル、詳細 に「出荷モード」をドロップする

集計結果が分かれるのは共通で、出荷モードをどう表現するかが異なる
(詳細=視覚的には同じまま、集計単位だけ細かくする)


このように、元の行データを集計した結果を区切る単位をコントロールできる場所がいくつかあります。(列・行・色・サイズ・ラベル・詳細)

これらによって決められた集計単位(ビューでの集計単位)のことを、見た目の粒度と呼ぶことがあります。(viz LOD とも言われます)
* LOD = Level Of Details



b. SUMを計算?  計算したものをSUM?
「集計 vs 非集計」の計算


次に、
元データの値から計算を行うときに気にしなくてはいけない、
集計・非集計の考え方について触れます。

ここでは、売上と数量から平均単価を計算する という例で考えてみます
(売上÷数量=平均単価)

例:4行の売上データ
全体売上320円、数量8個


1. 非集計=元データの行ごとに計算
計算フィールドでこのように割り算を書くと、各行で計算を行います。
それぞれの行で割り算された結果を持ちます。(行ごとデータなので、集計することもできます)

行単位の計算結果
Cは10円、Bは200円 と幅がある


2. 全体の平均は?= 集計計算
では、製品、店舗の切り口を外し、全体の平均を出してみます。
が、1の「行ごと計算」を集計しても、期待した答えが得られません

1の結果を集計してみるが。。。
行ごとの計算結果を合計しても意味がない
平均しても違和感がある:行ごとの重み(数量)が考慮されてない


感覚的に、 320円 ÷ 8個 =40 と求めるのが正しそうです。
つまり合計の割り算(加重平均)が必要になりますよね。ここで集計計算が登場します。
言い方を変えると、集計結果を先に作ってから計算をさせることになります。

集計結果(ここでは合計 SUM )を計算する

この場合、Tableauが何をしているか、以下3点を覚えておくとよいです
 - 集計の方法は関数で決める (SUM, AVG, MAX, など )
 - 集計関数が入るので、行ごとではなく、集計単位での計算になる
 - 集計される単位は、  a で説明した「見た目の粒度 viz LOD」に従う


a+b 組み合わせて使う:全体の平均を切り分けていく

集計計算は見た目の粒度に従うので、切り口を追加すると、
切り分けられた集計結果それぞれを割り算していきます

行に「店舗」を追加すると、
店舗単位で集計してから割り算となる




エラー:1個の計算式に集計と非集計は同居できない

最後に、冒頭に紹介した、エラーが出るケースを思い出してみましょう
「集計と非集計は混在できない」と言われるのですが、最初いまいちピンときませんでした。

数量は行データなので、SUM()を外す(非集計)とエラーが起きる

この集計の仕組みを踏まえると、集計されたカタマリの相手として1行のデータを特定できないからエラーになると考えています。
違う見方をすると、Tableauは同じ粒度の集計結果で計算していることになりますね。

売上の集計 320 を割る相手が非集計だと、
Tableauがどの行を参照したら良いかわからなくなる


ちなみに、集計を集計するのもダメですね。

【参考】集計計算のフィールドをさらに集計するのもエラーです
この場合は SUM() を外すべき

まとめ

おさらいするとこんな感じでしょうか。

  • 集計:複数データを束ねて代表の値を決めること

  • 集計単位はビュー上の「見た目粒度」で決まる

  • 行ごとの計算(非集計計算)と、集計してから計算(集計計算)がある

  • 粒度の違うものを計算しようとするとエラーになる(集計と非集計の混在)

関連するトピック

  • ディメンション(切り口)とメジャー(値) /    連続と不連続

  • LOD計算(粒度違い計算)

  • 表計算(Table calculation)


シンプルと言いつつ、書き出してみると結構な量でした笑

集計自体は難しくないのですが、発展させると徐々に複雑になります
集計・計算の粒度のイメージをしっかりつかんで応用できると出来ることが拡がると思います。

というわけで、
最後まで読んでいただきありがとうございました!

この記事が気に入ったらサポートをしてみませんか?