JapanTaxiではGoogle BigQueryのメタデータをバックアップするツールを作成し運用しています。そして今回そのツールをオープンソースとして公開しました。その紹介になります。
メタデータとは
JapanTaxiでは「JapanTaxi」アプリや車載の「JapanTaxiタブレット」など多くのプロダクトをもっており、これらのデータを全社データウェアハウスであるGoogle BigQueryに格納して分析しています。
データを分析するときには、データが何を意味するか正確に知る必要があるため、データに関する情報「メタデータ」が重要になります。
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
是非気軽にご利用ください!