JapanTaxiではGoogle BigQueryのメタデータをバックアップするツールを作成し運用しています。そして今回そのツールをオープンソースとして公開しました。その紹介になります。
JapanTaxiでは「JapanTaxi」アプリや車載の「JapanTaxiタブレット」など多くのプロダクトをもっており、これらのデータを全社データウェアハウスであるGoogle BigQueryに格納して分析しています。
データを分析するときには、データが何を意味するか正確に知る必要があるため、データに関する情報「メタデータ」が重要になります。
JapanTaxiではGoogle BigQueryに備わっている説明欄にメタデータを書くことにしています。
分析者は毎日ブラウザからBigQueryのUI画面を開いてデータを見たりSQLの開発をしています。いわば分析者の生活環境です。この生活環境のなかにメタデータの画面もあるため、自然と目に入ります。これがメタデータの有用性を高めます。
また説明欄はクリックすれば簡単に書き換えることができるため、誤った記述や古い記述を見つけたらすぐに変更できます。これによりメタデータが陳腐化してしまうことを防ぎます。
世の中にはメタデータを管理するためのソリューションがいくつかありますが、これらは別のWebシステムで動くためメタデータを見るためにブラウザのページを開く必要があります。こうなるとメタデータを見つけることが困難になりますし、メタデータの変更も一手間かかります。
BigQueryの説明欄に記載したメタデータは、気をつけないと消失してしまいます。
説明欄が消失するケースの一つはETLツールでテーブルを洗いがえるときです。ETLツールによってはテーブルを毎回DROP/CREATEするものがあり、テーブルがDROPされると説明欄も消えてしまいます。
これを防ぐために、JapanTaxiでは独自のBigQueryメタデータバックアップツールを作りました。
このツールはBigQueryのAPIからメタデータ情報を抽出し、NoSQLサービスの一つであるGoogle FireStoreに格納します。これによりETL処理でメタデータが消失してもFireStoreから復元できるようにしています。
FireStoreを選択した理由は最も簡単にかつ従量課金でJSONの出し入れができるためです。
APIから取得できるデータはJSON形式であるため、FireStoreであれば変換せずにそのまま格納することができます。また、メタデータはデータ量が小さく処理の頻度も非常に少ないため、従量課金のFireStoreがもっともコスト効率よくデータを格納できます。
ちなみに、このツールはGoogle Cloud Functions上で実行しています。
分析者誰もが自由に説明欄を書けるため、間違って消してしまうことがあり復元できないことがあります。また昔にどんな説明が書いてあったか知りたいケースもあります。
この課題に対応するために、メタデータを保管しているFireStoreのコレクションを定期的にコピーしてスナップショットとして保管しています。
今回作成したツールをオープンソース「bqdesc_backupper」として公開しました。
https://github.com/JapanTaxi/bqdesc_backupper
是非気軽にご利用ください!
Mobility Technologies では共に日本のモビリティを進化させていくエンジニアを募集しています。話を聞いてみたいという方は、是非 募集ページ からご相談ください!