見出し画像

Tableau の基本:表計算機能 つづき INDEX() 使ってる?

今回は表計算機能の続きで、表計算関数の話になります。
データの行レベルではなく、ビュー上の集計結果を使った計算、というのが基本的な考え方です。
(ビューにない粒度の集計結果での計算=LOD計算)

INDEX() ってなに?

タイトルにある INDEX()は、表計算機能を使う関数で、
表計算関数と呼ばれる(しつこい)中のひとつです。

Tableauのヘルプサイトでは、
「値に関しては並べ替えをせずに、パーティション内の現在の行のインデックスを返します」とあります。

今はかなりの頻度で使っています。が、・・・正直、最初あまり理解できませんでした。笑

実際見た方が早い

ということで、サンプルスーパーストアで見てみましょう
ここでは出荷モードを集計単位にして、とりあえず売上を入れておきます

出荷モードごとの売上の集計結果
集計粒度がほしいだけなので、メジャーは無くてもOK

INDEX関数の計算フィールドをつくってラベルに追加します

INDEX() と入れるだけ
集計結果の塊(出荷モード)に番号が振られました

表計算関数=ビュー上の集計結果を使った計算 ですが、
INDEXは「計算」せず、ただ番号をふるだけの関数なので、
表計算機能の「範囲と向き」を理解するのによいと思います

さきほどの例にカテゴリを追加し、「表計算の編集」メニューから
INDEX関数がどう番号を付けるかを確認できます。

複数ディメンションの場合、下の階層から番号が振られる
チェックを外すと
メンバが変わったときにカウントしなおす

INDEX() は表計算機能の基本

「範囲と向き」が理解できると、ほかの表計算関数の挙動が想像できるようになります。

RUNNING_SUM はこの順番で累計するし、
WINDOW_AVG は範囲の中での「集計値の平均」を出し、
LOOKUP は、この順番に従って +n 個めの集計値を取ってきなさい、という意味になります
集計結果を計算する関数なので、計算対象は集計計算が入ります(非集計フィールドを入れるとエラーになる)

仕組みが分かると応用ができる

INDEX関数に話をもどします。この集計結果に番号を振るだけの関数ですが、使いみちは?と思うかもしれません。

ここでは2つ挙げます。

ジッターチャート  Jitter chart

一直線に並べると重なって見づらい!という時に使うテクニックです。
表示単位で番号をつけ、割り算の余りを利用してまとめてます
 -  奇数で割ると見やすいらしい
 - ズラしすぎると「何か意味があるのかな?」ってなるので注意しましょう

【INDEX前】都道府県別の利益分布。サイズは売上
ヨコ直線上に重なっててちょっと見づらい
【INDEX後】計算式 : index()%7
ここでは都道府県に番号をつけ、7で割った余りをタテ軸にして、ちょっとズラしている
割る数を変えたり、「軸の範囲」設定で余白を取って、ズレ具合を調整できます

スモールマルチプル  Small Multiples

 トレリスチャートとか、いろんな呼び方があります。

ひとつのグラフを、メンバ数の多いディメンション(ここでは都道府県)で分けて並べようとすると、タテ or ヨコに長くなってしまい、俯瞰しにくくなっちゃいます。

そんな時、INDEX で振った番号を適当に割り算して、「商」と「あまり」
をつかってタテヨコに配置するテクニックです。
INDEXのカウントは1から始まるので、マイナス1してから割り算するのがコツです

※ last() とか、first()とか、0からカウントする関数もあるので、そっちのほうが楽できるかも (要検証)

【INDEX前】都道府県別 売上・利益の年ごと推移
めっちゃタテ長で俯瞰できない
【INDEX後】 行 :  int((index()-1)/7)  列 : (index()-1)%7 
表計算の範囲=都道府県に沿って計算
ここでは7で割って、都道府県が横に7つ並んだら折り返しが入ります
このほうがメンバー数が多くても見渡せる

まとめ

他にも使い道はいろいろあります(place holder の代わりにしたり、・・・)が、
表計算機能の基本である、範囲と向きを理解でき、応用範囲がひろいので、ぜひ使ってみてください。

最後まで読んでいただきありがとうございました。




いいなと思ったら応援しよう!