有没有一种方法可以轻松地识别在 BigQuery 中创建每个表的用户?我已经尝试检查过,INFORMATION_SCHEMA.TABLES但似乎没有该信息在那里。
更新
只是为了构建下面 Daniel 的答案,这将为您提供每个表的最近创建的版本,并仅过滤当前存在的表。
SELECT x.* EXCEPT(is_current)
FROM (
SELECT destination_table.dataset_id as table_schema,
destination_table.table_id as table_name,
user_email,
creation_time,
CASE WHEN RANK() OVER(PARTITION BY destination_table.dataset_id,
destination_table.table_id
ORDER BY creation_time DESC) = 1 THEN 1
ELSE 0
END as is_current,
FROM `region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
WHERE statement_type IN ('CREATE_TABLE', 'CREATE_TABLE_AS_SELECT')
ORDER BY creation_time DESC) x
INNER JOIN `region-us`.INFORMATION_SCHEMA.TABLES y ON x.table_schema = y.table_schema AND
x.table_name = y.table_name
WHERE is_current = 1
ORDER BY 1,2;
Run Code Online (Sandbox Code Playgroud)
您应该能够运行以下命令:
select *
from `region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
WHERE statement_type LIKE 'CREATE_TABLE%'
order by creation_time desc
;
Run Code Online (Sandbox Code Playgroud)
该表包含user_email执行该语句的内容。有关 JOBS_BY_* 视图的更多信息,请参阅文档:
https: //cloud.google.com/bigquery/docs/information-schema-jobs
更新
根据 shollyman 的反馈,这里有一些额外的注意事项对于通过 job_type 创建的表,QUERY您可能需要寻找一些额外的 statements_types,可以在此处找到该列表:
https: //cloud.google.com/bigquery/docs/reference /auditlogs/rest/Shared.Types/BigQueryAuditMetadata.QueryStatementType
此外,还定义了可以创建表的其他作业类型。例如 job_type 为COPY或 的场景LOAD。
该视图仅包含过去 180 天的数据,因此超出范围的数据您必须将审核日志保存到云存储或大型查询中。
| 归档时间: |
|
| 查看次数: |
5444 次 |
| 最近记录: |