自分の実行したクエリは簡単に参照することができますが、他のユーザが実行したクエリを参照するにどうするかをみていきます。
まず、クエリを参照するためには、権限と方法の2つが重要です。
クエリ・ジョブの実行履歴をみるための権限
権限については、以下の権限がクエリの実行履歴をみる操作に関係するものになります。
- bigquery.jobs.list : 自分のジョブが見れる
- bigquery.jobs.listAll : 全てのユーザのジョブが見れる
BigQueryの権限周りの基本はこちらを参照のこと。
Google Cloudでは、これらの権限を権限をまとめたロールとしてユーザアカウントに付与します。先ほどの2つの権限を含むロールは以下の通りになります。
- bigquery.jobs.list のみ
- BigQuery ユーザー(roles/bigquery.user
- bigquery.jobs.list/bigquery.jobs.listAll 両方
- BigQuery リソース管理者(roles/bigquery.resourceAdmin
- BigQuery リソース編集者(roles/bigquery.resourceEditor
- BigQuery リソース閲覧者(roles/bigquery.resourceViewer
権限の付与はIAMの画面でユーザやグループなどに対して行います。
ジョブの実行履歴を見る方法
方法としては、3つあります。
- WebUI上で見る
- コマンドで見る
- SQLで見る
このうち 1 と 2 は、同じ情報元を違う方法でみていることになります。
WebUI上で見る
BigQueryのコンソールの画面の最下部に「ジョブ履歴」「クエリ履歴」があるのでそこから閲覧できます。それぞれクリックするとさらに「個人履歴」と「プロジェクト履歴」があり、自分だけのものか、プロジェクトないの他のユーザのものも含めてか、見ることができる。
先の通り、他のユーザのものを見るためには、閲覧するユーザが bigquery.jobs.listAll
の権限を持っている必要がある。
コマンドで見る
以下のコマンドを実行するとジョブの一覧が見れる
個人の履歴を見る時
bq ls -j
プロジェクト全体(他の人のものも含む)の履歴を見る場合
bq ls -j --all
SQLで見る
INFORMATION_SCHEMAというメタデータを参照することでもジョブの履歴を見ることができます。
個人の履歴を見る時。テーブルには、頭にリージョンを指定します。
SELECT * FROM `region-us`.INFORMATION_SCHEMA.JOBS_BY_USER
プロジェクト全体を見る時。
SELECT * FROM `region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
さらに、テーブル名を JOBS_BY_FOLDER
, JOBS_BY_ORGANIZATION
とすることで、より上位の組織構造に対する情報の取得が一括でできます。
こちらも見るのに必要な権限の考え方は同じです。
INFORMATION_SCHEMAでジョブの情報をみる詳しい情報はこちらを参照ください。
ちなみに、INFORMATION_SCHEMAではジョブ以外のテーブルの情報なども参照することができます。
最後に注意点としては、INFORMATION_SCHEMAの参照は通常のクエリと同様お金がかかりますので、ご注意を。