はじめに
BigQueryを活用していると、データパイプラインの自動化のためにスケジュールドクエリの数がどんどん増えていきます。
「あの時に設定したクエリはどこだっけ?」 「特定のデータセットに書き込んでいるスケジュールクエリを一覧で見たい」
...といった場合に、Google Cloudコンソール(管理コンソール)のWeb UIから一つずつ探すのは大変です。スケジュールクエリの数が多い場合、コンソールでは一覧性が悪く、目的のクエリを見つけるのに手間取ってしまいます。
本記事では、この課題を解決するために、BigQuery Data Transfer API を使用し、curl を組み合わせて、スケジュールドクエリの情報を一括で取得し、CSV形式で出力する方法を解説します。
スケジュールドクエリを一括出力する方法
BigQueryのスケジュールドクエリは、BigQuery Data Transfer Service のリソースとして管理されています。これらの一覧は、Data Transfer APIのエンドポイントを curl で取得します。
使用するコマンド
以下のコマンドを実行することで、指定したプロジェクト内のすべてのスケジュールドクエリ(Data Transferの設定)の情報を取得し、CSV形式で整形して出力できます。
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://bigquerydatatransfer.googleapis.com/v1/projects/$PROJECT-ID/locations/$LOCATION/transferConfigs" \
| jq -r '.transferConfigs[] | [.displayName, .name, .params.query] | @csv' > $file_name.csv
実行結果
上記のコマンドを実行すると、$file_name.csv というファイルが生成されます。
このCSVファイルを開けば、スケジュールドクエリの表示名、リソース名、クエリ本文などが一覧で確認できます。特に「クエリ本文」や「表示名」でフィルタリングや検索を行えば、目的のスケジュールクエリを容易に見つけ出すことが可能になります。
参考
BigQuery Data Transfer Service
Method: transferConfigs.list
まとめ
一括出力されたCSVファイルを活用すれば、管理コンソールから一つずつ探す手間がなくなり、目的のスケジュールクエリを素早く見つけ出すことが可能になります。