Tableau の基本:表計算機能 つづき INDEX() 使ってる?
今回は表計算機能の続きで、表計算関数の話になります。
データの行レベルではなく、ビュー上の集計結果を使った計算、というのが基本的な考え方です。
(ビューにない粒度の集計結果での計算=LOD計算)
INDEX() ってなに?
タイトルにある INDEX()は、表計算機能を使う関数で、
表計算関数と呼ばれる(しつこい)中のひとつです。
Tableauのヘルプサイトでは、
「値に関しては並べ替えをせずに、パーティション内の現在の行のインデックスを返します」とあります。
今はかなりの頻度で使っています。が、・・・正直、最初あまり理解できませんでした。笑
実際見た方が早い
ということで、サンプルスーパーストアで見てみましょう
ここでは出荷モードを集計単位にして、とりあえず売上を入れておきます
INDEX関数の計算フィールドをつくってラベルに追加します
表計算関数=ビュー上の集計結果を使った計算 ですが、
INDEXは「計算」せず、ただ番号をふるだけの関数なので、
表計算機能の「範囲と向き」を理解するのによいと思います
さきほどの例にカテゴリを追加し、「表計算の編集」メニューから
INDEX関数がどう番号を付けるかを確認できます。
INDEX() は表計算機能の基本
「範囲と向き」が理解できると、ほかの表計算関数の挙動が想像できるようになります。
RUNNING_SUM はこの順番で累計するし、
WINDOW_AVG は範囲の中での「集計値の平均」を出し、
LOOKUP は、この順番に従って +n 個めの集計値を取ってきなさい、という意味になります
集計結果を計算する関数なので、計算対象は集計計算が入ります(非集計フィールドを入れるとエラーになる)
仕組みが分かると応用ができる
INDEX関数に話をもどします。この集計結果に番号を振るだけの関数ですが、使いみちは?と思うかもしれません。
ここでは2つ挙げます。
ジッターチャート Jitter chart
一直線に並べると重なって見づらい!という時に使うテクニックです。
表示単位で番号をつけ、割り算の余りを利用してまとめてます
- 奇数で割ると見やすいらしい
- ズラしすぎると「何か意味があるのかな?」ってなるので注意しましょう
スモールマルチプル Small Multiples
トレリスチャートとか、いろんな呼び方があります。
ひとつのグラフを、メンバ数の多いディメンション(ここでは都道府県)で分けて並べようとすると、タテ or ヨコに長くなってしまい、俯瞰しにくくなっちゃいます。
そんな時、INDEX で振った番号を適当に割り算して、「商」と「あまり」
をつかってタテヨコに配置するテクニックです。
INDEXのカウントは1から始まるので、マイナス1してから割り算するのがコツです
※ last() とか、first()とか、0からカウントする関数もあるので、そっちのほうが楽できるかも (要検証)
まとめ
他にも使い道はいろいろあります(place holder の代わりにしたり、・・・)が、
表計算機能の基本である、範囲と向きを理解でき、応用範囲がひろいので、ぜひ使ってみてください。
最後まで読んでいただきありがとうございました。