Domo初心者時代に苦労した話【Domo Buddies勉強会】
Domo(ドーモ)初心者の誰もが通る道といえば、過去比較。
先日のbuddies勉強会において、今となってはDomoを使いこなす先輩ユーザーがDomo利用当初の体験談をお話してくださいました。誰もがみな同じような経験があるようで、”わかる!””あるあるですね”という共感をよび、チャットは大盛り上がり。
この体験を多くの方と共有したく、本ブログではこの時の内容をnoteに起こしました。なるべくその場のニュアンスを伝えられるように、Domo Buddies勉強会における最初のセッションの一部分をほぼそのまま、ドーモのコミュニティマネージャー西尾がお届けします。
Domo Buddiesとは?という方はこちら▼
1.スピーカーのご紹介
西日本旅客鉄道株式会社の東です。現在デジタルソリューション本部に所属し、経営ダッシュボードやデータレイク、CRMなど様々なプロジェクトを推進しております。Domo歴は浅い方で、約1年半ほど携わってきました。これまでの経歴としては、現場で5~6年ほど幅広く勉強させていただき、ハンマーを持っては電車を整備し、大阪環状線もよく運転していました。その後はダイヤ関係をつかさどる指令部門を経て、間接部門でCSIRTを立ち上げ、開発プロジェクトの推進などを行ってきました。
2.Domo初心者時代に苦労した話
誰もが最初に通る道だと思いますが、Domoにデータを入れたからには過去の比較をしたくなりますよね?
2.1.前年同日比をみたい
例えば”前年同日と比べ、どうであったのかをみたい”、と言われるはずです。
Domo の Analyzer (アナライザー)にはすごく便利な機能があり、チェックを入れるだけで簡単に前日比や前月比、過去四年分にさかのぼって見れて非常に便利かと思います。
※参考:Knowledge Base「前期比チャート」
2.2.前年同曜比もみたい
しかし、ユーザーというのはどんどん欲が出てきます。
特に鉄道業界では1年前というよりは”1年前の同じ曜日や、前年の同日で見たい”と言われます。
この場合、Analyzerのフィルターの「52週間前」にチェックを入れると、1年前のデータを見せられるようになります。
2.3.数値じゃなくて比率で見たい
しかしこの段階では数値しか出せないため、今度は”数値じゃなくて比率で見たい”と言われます。
Analyzer上でこれを実現するためには、Beast Mode(ビーストモード)を使うと、意外と何でもできたりします。
※参考:Knowledge Base「Beast Mode計算例:前期比変換」
2.4.あれも見たい、これも見たい
そして最終的にユーザーがたどり着くのは、、、、もーっといろんな条件でみたい、になりますよね。
前年同曜(52週前)だけでなく、前々年同曜(104週前)と前々々年同曜(157週)も同じグラフ上で見たい。あと、そもそもBeast Modeよくわからないからデータセットの時点で過去のデータも簡単に見れるようにしてほしい、もっと扱いやすいようなデータセットにして欲しい、などといった要望が出てくるのではないでしょうか。
ここまでくるとAnalyzerやBeast Modeではなく、その手前のETLやSQLで加工が必要となります。
例えば前年同日のデータを比べる際、元のデータに対し、元のデータの日付に対して1年ずらしたデータを作ります。
次に「人数」という列を「前年人数」という名前にし、このデータセットと元のデータを一つにします。
そして、もう1つの日付をx軸に入れたら人数と前年人数が一つになります。これでデータセットの中で1つの日付に対して過去のデータも表示されることを実現できます。
Domoさんの中では基本的にはUnion(ユニオン;行を追加)しか使わないと話を聞きました。たしかにこれでも十分なんですが、Unionですと行数がそのまま増大してしまいます。
鉄道のデータというのは、例えば”どの駅からどの駅に移動した”といった情報を一つ一つ積み重ねただけでも、あっという間に1億行は超えてしまいます。ですので、できるだけUnionせずに行数削減のために、頑張ってJoin(ジョイン;データを結合)を使っています。
2.5.Joinを使う
それではJoinを使ってどのように実装しているのかを簡単にご紹介します。少々やり過ぎな感じがありますが、元のデータに対して、例えば前年同様であれば52週間足してあげて、現在のデータに対してJoin(Joinタイプ:左外側)をします。
こちらはホテルのデータになります。日付とホテルのそれぞれをキーにし、Joinタイプを”左外側”にし、結合してあげます。ここではデータセットがそれぞれ3つありますが、前年同曜、前々年同曜、前々年同曜の3年分となっています。このようにして過去比較をしています。
ここまでくるとこんなことをせず、一層のことSQLを書けばいいんですけが、「ローコードツールを使って社内のシチズン サイエンティストを育成していこう」という方針の手前、なかなかSQLまでは踏み込めずにいます。
なお、一点注意点があります。Unionだけしていれば全く起きない問題ですが、Joinを使うとよく陥りがちな事です。
例えば、去年は運行した電車が今年は運行しなかった場合です。今年のデータに対してJoinしてしまうと、当然去年の実績が比較できなくなってしまうわけでして、鉄道業界固有の話かもしれませんが、よく発生してしまいます。
そのような場合はデータ補完もしてあげます。例えば今回の場合であれば、日付がnullだった場合に備え、鉄道のデータは基本的にJoinタイプを
”両方の外側”に設定し、両方のデータを結合してあげています。
3.はじめてのETL
さて、そんな私が一番最初に作ったETLがこちらです。
どのようなETLなのか、ぱっと見て全くわからないと思います。(笑)
よく見ていただくと、「とあるグループ会社」の2年分の月次の売上が入った合計24行のデータが左上にあります。この24行のデータを、年ごとに月別の累計計算を実行するETLが作られていました。おそらく当時私がやろうとしていた事は1年目と2年目のデータを分け、さらにそれを日付でひとつずつずらして、12ヶ月ごとに累積計算しようとしていたのではないかと推測します。
もう、皆さんならおわかりになる通り、これはDomoの「ランクとウインドウ」という機能を使えば一発でできますよね。それを私は知らなかったので、当時10時間ほどかけてこのETLを作った記憶があります。
4.Domo Buddies勉強会への期待
Domoに限らずですが、すでに実装されている機能を把握しておくことは非常に重要で、先人の知恵がないと使いこなすのに苦労すると、改めて振り返りながら今回思いました。
皆さんもDomoを使っている中で、
”他社さんと比べて実は使いこなせていないんじゃないか?”
”無駄な計算や間違った使い方しているんじゃないか?”
などよく感じられると思います。
これに対してDomoさんも頑張っていただいていまして、ナレッジベース、Dojo、最近ではカストレ環境など。いろいろやっていただいているんですが、今回のような勉強会を通して実体験を伴った話をじかに聴くことで、悩みや不安を解消できるのではないのかと期待しております。
※最後に
ドーモのコミュニティマネージャー西尾です。この話をきいて多くの方が、あぁ、こういうの最初のころ悩んだな、また今まさにここで悩んでいるな、といったご様子で大勢の方の共感を呼びました。
ユーザーさんと話していて思うことに、皆さん同じような課題にぶつかり、悩み、躓いています。コミュニティマネージャーとしては、ぜひ皆でその悩みを共有して共に成長していきたいと考えています。
下記、毎月勉強会を開催しています。ユーザーさんの生の声をリアルタイムで話を聞いてみませんか?
▼Domo Buddies勉強会はこちらから▼
https://domobuddies.doorkeeper.jp/