BIgQueryでテーブルに対してSELECT文を発行している人を特定するときにハマったのでメモ。

以下でユーザのメールアドレスが取得できます。

 

SELECT  referenced_table.table_id, user_email, end_time, query, total_bytes_processed
FROM 
`region-asia-northeast1`.INFORMATION_SCHEMA.JOBS_BY_PROJECT as base,  
UNNEST(referenced_tables) AS referenced_table
WHERE  
base.project_id = 'プロジェクト名'  
and base.statement_type = 'SELECT' 
and referenced_table.table_id = 'テーブル名' 
order by total_bytes_processed desc
;

 

UNNESTを使用してreferenced_tables内の情報をwhere句で指定できるようにするのがキモです。