こんにちは。
タブローエンジニアとしてデビューした遠藤です。

最近、タブロー(Tableau)を使うことがあり、とても面白かったので、どんなものを作ったのか、また、その際のポイントなどを共有してみたいと思います。

Tableauとは

今回のブログで使用しているデータは、 Beacapp 社よりいただいたサンプルのデータをもとに生成しています。
Beacapp 社では、 Beacon を使った人やモノの位置解析を行なっております。
https://jp.beacapp-here.com/

作ったもの

稼働時間の可視化

1日のうちで、何時から何時まで、どこにいたか、何をしていたかを表現できます。
これは、ガントチャートを使って実現しました。

今回は、各場所の滞在時間を作成しました。
----------2023-11-01-23.53.24

ガントチャート自体の設定方法は、タブロー公式が公開している動画が参考になりました。
https://kb.tableau.com/articles/howto/creating-a-gantt-chart-with-shapes-for-small-time-increments?lang=ja-jp

ガントチャートなので、本来は X 軸に異なる日付を並べるような使い方はしませんし、できません。
1/1 のデータ、1/2 のデータ、というように、横に並んでしまいます。
これを回避するために、年月日までを全て同じ日付に変換したデータを用意しました。

例えば、 以下のようなデータがあった場合

# 検知日時
2023/12/01 10:00:00
2023/12/02 10:00:00
2023/12/03 10:00:00

2000/01/01 10:00:00
2000/01/01 10:00:00
2000/01/01 10:00:00

と変換して保持しておくイメージです。
年月日については、全てのデータで共通であれば、1970年でも、 2999年でも問題ありません。

上記は、あくまでもガントチャートを縦に並べるためのデータなので、元の日付のデータも別途持っておく必要がある点に注意です。

つまり、表示用のレコードを追加して保持するイメージになります。

# 検知日時
2023/12/01 10:00:00
2023/12/02 10:00:00
2023/12/03 10:00:00

# 検知日時, 表示用日時
2023/12/01 10:00:00, 2000/01/01 10:00:00
2023/12/02 10:00:00, 2000/01/01 10:00:00
2023/12/03 10:00:00, 2000/01/01 10:00:00

また、それぞれの横棒の長さの単位は「日」になります。
元々用意していたデータが「秒」のデータだっため、こんなことになります。

----------2023-11-03-0.14.41
(2248年! 生きていたいものですね...)

しっかり割り算して日単位に変換してあげましょう。

秒のデータなら、seconds / (24 * 60 * 60) ですね。

ヒートマップ

ヒートマップの表現もできます。
----------2023-11-08-16.38.01

これは先ほどの滞在時間をマップ上で表現し、ガントチャートの横軸の長さが、ヒートマップの色の濃い場所に該当します。

マップの色合いについては、30種類以上用意されています。
誰が使うねん...みたいな色もあります。

----------2023-11-08-16.39.39

----------2023-11-08-16.38.31

自分でカスタムのグラデーションを定義することはできなさそうで、ちょっと残念なポイントでした。
個人的に一番ヒートマップっぽいなと思った、おすすめの配色は「明るくて濃い多色」。
他にどんな色があるかは、使ってみてのお楽しみです。

座標の情報については、以下のように X軸, Y軸のデータを持たせてあげれば、あとはタブローが適切にマッピングしてくれます。
背景に画像を設定することができますが、その px と一致させておくのが良さそうです。

# 検知日時, 表示用日時, 場所名, X, Y
2023/12/01 10:00:00, 2000/01/01 10:00:00, 会議室1, 100, 200
2023/12/02 10:00:00, 2000/01/01 10:00:00, 会議室2, 200, 200
2023/12/03 10:00:00, 2000/01/01 10:00:00, 会議室1, 100, 200

導線分析

これは、誰がどのような導線でマップ上を動いたか、を線で表現します。
また、滞在時間を線の太さで表現しています。

----------2023-11-08-22.12.22

使用しているデータソースについては、ヒートマップと変わりません。
表示するマークを「線」にして、滞在時間の合計を「サイズ」にしてあげることで作成できました。

例えば、台風のルートとその時の強さなどを表現するような時にも使用できますね。

ダッシュボード

ここまで紹介してきたものは、それぞれワークシートで作成します。
このワークシートを組み合わせて、同時に表示できるダッシュボードも作れます。

----------2023-11-08-22.15.30

その他のポイント

タブロークラウドと RDS の連携

ここまでの画面の作成は、 タブローデスクトップを使って作成しています。
手元で解析するだけであれば、それで良いのですが、他の方と共有したい場合などは、タブロークラウドで共有することができます。

この時に、データソースを、例えば csv などを読み込ませていた場合は、ローカルのファイルをそのまま共有できます。

ただ、リアルタイムにデータを集計したい場合はなどは、直接 DB(RDS) に繋ぎに行くこともできます。
今回は、 AWS 上の RDS(Postgres) を用意して、接続を試してみました。

他にどのようなデータソースが使えるかは、公式から案内が出ています。
https://help.tableau.com/current/online/ja-jp/to_keep_data_fresh.htm

また、タブロークラウドがアクセスする際の IP アドレスも同じページに公開されているので、穴を開けてあげる必要があります。
どうしても、DBを外からのアクセスを受ける場所におく必要があるので、セキュリティ対策は万全にしておきましょう。

正規化もできる

ヒートマップで説明したデータの持ち方ですが、以下のように座標情報を1レコードに一緒に持つことで、列に X, 行に Y を指定して表示することができます。

# 検知日時, 表示用日時, 場所名, X, Y
2023/12/01 10:00:00, 2000/01/01 10:00:00, 会議室1, 100, 200
2023/12/02 10:00:00, 2000/01/01 10:00:00, 会議室2, 200, 200
2023/12/03 10:00:00, 2000/01/01 10:00:00, 会議室1, 100, 200

また、正規化させて以下のように、テーブルを分けることも可能です。

# 検知日時, 表示用日時, 場所名
2023/12/01 10:00:00, 2000/01/01 10:00:00, 会議室1
2023/12/02 10:00:00, 2000/01/01 10:00:00, 会議室2
2023/12/03 10:00:00, 2000/01/01 10:00:00, 会議室1
# 場所名, X, Y
会議室1, 100, 200
会議室2, 200, 200

正規化したデータでも、なんとタブローの機能で結合して、データソースとすることができます。
----------2023-11-03-0.27.57

データの正規化は一長一短なところはありますが、頻繁にデータが変わらない内容については、正規化できないか検討するのが良いですね。

終わりに(宣伝を兼ねて)

ここまで3パターンを紹介しましたが、他にもたくさんの表現方法がありました。
ただし、タブローの機能と、持っているデータの形式によっては、そのままではうまくいかない、ということもありそうです。
今回も、元々持っていたデータをかなり加工して、タブローで表示しやすい形式に保存し直しています。
(そこそこ大変でした...)

ミルディアでは、タブローを使ったデータの表示、データ自体の加工などもご相談をお待ちしています。
弊社ホームページの CONTACT から、お気軽にお問い合わせください。
https://www.milldea.com/

また、人やモノの位置データを取るところから試してみたい、という方は、ぜひ、 Beacapp 社へご相談ください。
https://jp.beacapp-here.com/