こんにちは。
タブローエンジニアとしてデビューした遠藤です。
最近、タブロー(Tableau)を使うことがあり、とても面白かったので、どんなものを作ったのか、また、その際のポイントなどを共有してみたいと思います。
今回のブログで使用しているデータは、 Beacapp 社よりいただいたサンプルのデータをもとに生成しています。
Beacapp 社では、 Beacon を使った人やモノの位置解析を行なっております。
https://jp.beacapp-here.com/
作ったもの
稼働時間の可視化
1日のうちで、何時から何時まで、どこにいたか、何をしていたかを表現できます。
これは、ガントチャートを使って実現しました。
今回は、各場所の滞在時間を作成しました。
ガントチャート自体の設定方法は、タブロー公式が公開している動画が参考になりました。
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
また、それぞれの横棒の長さの単位は「日」になります。
元々用意していたデータが「秒」のデータだっため、こんなことになります。
(2248年! 生きていたいものですね...)
しっかり割り算して日単位に変換してあげましょう。
秒のデータなら、seconds / (24 * 60 * 60)
ですね。
ヒートマップ
ヒートマップの表現もできます。
これは先ほどの滞在時間をマップ上で表現し、ガントチャートの横軸の長さが、ヒートマップの色の濃い場所に該当します。
マップの色合いについては、30種類以上用意されています。
誰が使うねん...みたいな色もあります。
自分でカスタムのグラデーションを定義することはできなさそうで、ちょっと残念なポイントでした。
個人的に一番ヒートマップっぽいなと思った、おすすめの配色は「明るくて濃い多色」。
他にどんな色があるかは、使ってみてのお楽しみです。
座標の情報については、以下のように 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
導線分析
これは、誰がどのような導線でマップ上を動いたか、を線で表現します。
また、滞在時間を線の太さで表現しています。
使用しているデータソースについては、ヒートマップと変わりません。
表示するマークを「線」にして、滞在時間の合計を「サイズ」にしてあげることで作成できました。
例えば、台風のルートとその時の強さなどを表現するような時にも使用できますね。
ダッシュボード
ここまで紹介してきたものは、それぞれワークシートで作成します。
このワークシートを組み合わせて、同時に表示できるダッシュボードも作れます。
その他のポイント
タブロークラウドと 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
正規化したデータでも、なんとタブローの機能で結合して、データソースとすることができます。
データの正規化は一長一短なところはありますが、頻繁にデータが変わらない内容については、正規化できないか検討するのが良いですね。
終わりに(宣伝を兼ねて)
ここまで3パターンを紹介しましたが、他にもたくさんの表現方法がありました。
ただし、タブローの機能と、持っているデータの形式によっては、そのままではうまくいかない、ということもありそうです。
今回も、元々持っていたデータをかなり加工して、タブローで表示しやすい形式に保存し直しています。
(そこそこ大変でした...)
ミルディアでは、タブローを使ったデータの表示、データ自体の加工などもご相談をお待ちしています。
弊社ホームページの CONTACT から、お気軽にお問い合わせください。
https://www.milldea.com/
また、人やモノの位置データを取るところから試してみたい、という方は、ぜひ、 Beacapp 社へご相談ください。
https://jp.beacapp-here.com/