こんにちは、ノブです。
データドリブンな意思決定をよりスピーディに行うために分析工程をより速く・正確に行う方法がないかを日々試行錯誤しています。
その中の試みの一つについて記載します。
運用から3ヶ月程度経過し、効果を実感しているため、同じような悩みをお持ちの方の何かヒントになればとても嬉しく思います。
分析工程のボトルネック
分析の速度・正確性を考えた時に分析業務を以下の3つに大別しました。
-
分析を計画する
- 明確にしたいものを定義する
- 分析にあたっての取得するデータを定義する
- どのような分析、可視化を行うかを考える -
データを取得する
- DBの中身を把握する
- クエリを考える
- 可視化を行う -
分析をする
- 可視化したものや情報を元に実際に分析を行う
- 議論できるように結果をレポーティングする
この中で特に時間がかかっていて改善の余地が見込まれたのが「データを取得する時間」でした。
複業クラウドにおける BigQuery
複業クラウドでは、ログデータや同期したマスタテーブルを分析用に整形せずに生に近い状態で BigQuery に蓄積しており、データレイクとして活用していました。
上図のように分析者や BIツールはこの BigQuery を参照してデータ取得を行っていましたが、生データに近いが故に以下の課題を持っていました。
- 分析に不要な情報が多く存在する
- 値や構造が実装者寄りで分析者寄りではない
一つ目の「分析に不要な情報が多く存在する」についてです。
同期したマスタテーブルでは、どの分析でも落としている情報がありました。
例えば、求人データの公開日は重要ですが同じテーブルに存在するシステムで出し分けのために使っている値は分析では必ず落としていました。
二つ目の「値や構造が実装者寄りで分析者寄りではない」についてです。
システムとしての良いテーブル構造が必ずしも分析にとって都合の良い構造ではないということは良くあることだと思います。
具体的には、分析を目的とした SQL では結合や条件句が非常に多くなってしまい可読性やメンテナンス性に乏しいクエリとなっていました。
解決策
解決策として DWH(データウェアハウス)を作成することとしました。
DWH は目的を分析に絞り、不要な情報は先に落とし、構造も分析寄りにしました。
DWH を設けることは BigQuery のビューを使うことで容易にできたので利用サービスが増えることもありませんでした。
ビューの使用方法は公式のドキュメントに記載されているため割愛しますが、得られた効果を考えるとビューを用いた DWH の作成コストは非常に小さいと改めて感じています。
効果
DWHの運用は、効果を十分に感じています。
得られた効果は大きく二つあります。
- クエリが簡潔になった
- 分析用の単語の定義にブレがなくなった
どちらの効果も分析のスピードをあげるだけでなく人的ミスを減らすことにも貢献してくれています。
また、今後分析を担当するメンバーが増えた際にも全てのテーブルの関係性を説明するのではなく、目的にそった DWHを説明すれば良くなりました。
まとめ
今回は BigQuery のビューを用いて DWH を設けた話をさせていただきました。
DWH を作成すると、今後はデータマートを作成することも容易となり、またこの話もできればと思っています。
サービスの進化に合わせて保持するデータは常に変わっていくもので、それを途切れることなく貯めていく分析基盤は非常に難しく魅力的なものですが、分析のための正しいデータ運用をこれからも模索できればと思っています。
Share this post