Tableau 表計算の採番Tips

TableauなどBIツールの得意な所ではないにせよ、クロス集計を使わざるを得ない場面というのは多々あるかと思います。
 私もエンジニアになるまで長いこと事務をやっていたせいか、クロス集計には謎の安心感はあります…。
 仕事でディメンションが10以上はあろうかというクロス集計表に出会うこともありますが、今回はクロス集計表で連番を振ったり、フラグを付けたりする際に役立つかもしれないニッチなTipsをご紹介したいと思います。
 
 このようなクロス集計表があったとします。データソースはみんな大好きサンプルスーパーストアです。

 


①カテゴリごとに、オーダー日の古い順に連番を振る
 
(以下のお話はフィクションです)
 お客様:この表のレイアウトのままで、カテゴリ毎に出荷日順に番号を振りたいのよ。同日なら同じ数字でいいので。
 私:  分かりました。表計算を使えばできますよ。
  
  こんな計算フィールドを作って

表計算の編集でこのように設定します。

 チェックを入れているディメンションが表計算をかける「方向」を、チェックを外しているディメンションが「区分」を定義します。区分は計算をリスタートする区切りであり、さらに「再開間隔」で指定したディメンションでもう一段階計算をリスタートします。
 こうしたクロス集計のようなディメンションが多いチャートでは、表計算の「特定のディメンション」に何にチェック入れるかよりも、「何に入れないか」に注意した方が思った通りの計算ができるでしょう。
 実行レベルは指定したディメンションより細かいデータ粒度では計算しないという設定で、今回は一番細かい日付で計算しているため「最も深い」でよいです。
 これによって、これにより計算フィールドで指定している出荷日ごとに採番されますが、チェックを外しているカテゴリが切り替わるごとに採番が1からリスタートされ、さらに再開間隔に入れている顧客Idをまたぐ際に採番がリスタートされます。
 このあたりの概念は、こちらの記事で丁寧に解説されています。

② ①の後に、さらにオーダーIDごとに複合で採番する

 お客様:やっぱりカテゴリごとに出荷日順で番号つけた後に、さらに製品Idで番号つけてくれ。同日出荷でも違う製品順で並べ替えしたいのよ。
 私:  アッハイ、分かりました。複合キーってことかな…
 
 複合で連番を取ろうと思えば、力技ですが下記のようにそれぞれ計算したものを文字列型にしてくっつけるという方法があります。
 こんな形で計算フィールドを作ると

このように複合で連番できます。

 ちなみに、計算フィールドでasc(昇順)としているものをdesc(降順)にすると、逆順に採番することもできます。
こうしたニーズは、私の仕事の中で実際にありました。

 今紹介したようなテクニックは使う場面が限られるかもしれませんが、複雑な並べ替えをしたり、各単位で一番古い(新しい)レコードにフラグをつけたりする際にやくに立つかもしれません。
 クロス集計と表計算は非常に相性がよく、こうした表と日々向き合う方こそ表計算を使ってみて損はないと思います。
  表計算が苦手と感じている方も、一度お試しあれ。