如何检索BigQuery项目中2022年新建的所有VIEWS?
解决BigQuery中查找2022年新建视图的问题
别担心,我有两个靠谱的办法帮你找到目标视图——毕竟INFORMATION_SCHEMA.VIEWS确实没有creation_time字段,但我们可以从其他元数据或日志维度入手:
方法1:利用INFORMATION_SCHEMA.TABLES(最简单直接)
在BigQuery的元数据体系里,视图会被归类到TABLES视图中,而且这里的creation_time字段对视图同样生效!你只需要筛选出表类型为VIEW的记录,再精准限定创建时间在2022年的范围即可。
这里不推荐用LIKE匹配时间字符串(creation_time是TIMESTAMP类型,范围匹配更准确且性能更好),示例查询如下:
SELECT table_catalog AS project_id, table_schema AS dataset_id, table_name AS view_name, creation_time, last_modified_time FROM myProject.`region-us`.INFORMATION_SCHEMA.TABLES WHERE table_type = 'VIEW' AND creation_time BETWEEN TIMESTAMP('2022-01-01 00:00:00') AND TIMESTAMP('2022-12-31 23:59:59') ORDER BY creation_time DESC;
这个查询会返回所有2022年创建的视图,还附带最后修改时间,方便你做进一步筛选。
方法2:通过审计日志精准追踪(适合需要详细上下文的场景)
如果你的BigQuery项目开启了Data Access Audit Logs,可以直接查询审计日志获取所有CREATE VIEW操作的完整记录——不仅能拿到创建时间,还能看到创建者、执行的SQL语句等细节。
日志默认存储在项目的_bq_logs数据集里,示例查询如下:
SELECT timestamp AS creation_timestamp, protopayload_auditlog.authenticationInfo.principalEmail AS creator, protopayload_auditlog.serviceData.jobCompletedEvent.job.jobConfiguration.query.query AS create_view_sql, protopayload_auditlog.resourceName AS view_resource_path FROM myProject.`region-us`._bq_logs.cloudaudit_googleapis_com_data_access WHERE timestamp BETWEEN TIMESTAMP('2022-01-01') AND TIMESTAMP('2023-01-01') AND protopayload_auditlog.methodName = 'google.cloud.bigquery.v2.JobService.InsertJob' AND protopayload_auditlog.serviceData.jobCompletedEvent.job.jobConfiguration.query.query LIKE '%CREATE VIEW%' ORDER BY timestamp DESC;
注意:如果你的项目未开启审计日志,这个方法就无法使用,此时优先选择方法1。
内容的提问来源于stack exchange,提问作者Matson
相关产品推荐
相关产品推荐

