BigQuery - 查询“上次修改”等元数据
Posted
技术标签:
【中文标题】BigQuery - 查询“上次修改”等元数据【英文标题】:BigQuery - query for metadata like 'last modified' 【发布时间】:2021-09-21 08:52:55 【问题描述】:有没有办法在 BigQuery 中查询表的详细信息?我是什么意思?像这样运行查询
SELECT * FROM region-eu.INFORMATION_SCHEMA.TABLES
我得到了计费项目的名称、数据集名称、表名、表类型、是否可插入、已键入和创建时间。但是,查看 BQ 控制台中的详细信息选项卡,我可以找到表大小、上次修改时间、行数、分区依据等。有什么方法也可以查询这些元数据吗?
您的帮助将不胜感激。
【问题讨论】:
【参考方案1】:您可以通过导出 BigQuery 使用日志来查看元数据。
使用 Cloud Logging 设置日志导出。请参阅creating a sink 了解更详细的内容。
-
打开日志记录
点击日志路由器
点击创建接收器
输入“接收器名称”
对于“接收器服务”,选择“BigQuery 数据集”
选择要监控的 BigQuery 数据集
创建接收器
创建接收器后,所有要执行的操作都会将数据使用日志存储在表“cloudaudit_googleapis_com_data_access_YYYYMMDD”中,并将活动日志存储在您在接收器中选择的 BigQuery 数据集下的“cloudaudit_googleapis_com_activity_YYYYMMDD”表中。请记住,您只能从设置日志导出表之日开始跟踪使用情况。
创建的日志记录表:
使用这个简单的查询我检查了我的表的最新更新日期:
SELECT
JSON_EXTRACT(protopayload_auditlog.metadataJson, "$.tableChange.table.updateTime") as lastUpdate
FROM `project_id.dataset.cloudaudit_googleapis_com_activity*`
where protopayload_auditlog.metadataJson IS NOT NULL
ORDER BY lastUpdate DESC LIMIT 1
查询输出:
请参阅more BigQuery logging query examples,您可以参考metadata json structure,了解可以在您的表格中提取哪些细节。
编辑 20210923:
另一种选择是查询 __TABLES__ 它将返回:
project_id dataset_id table_id 创作时间 last_modified_time row_count size_bytes查看查询:
SELECT * FROM `projec_id.dataset_id.__TABLES__` LIMIT 100
输出:
【讨论】:
感谢您的回答。然而,这对我没有用。我宁愿有一些允许查询计费项目中所有表的东西,而不仅仅是指定的集合。此外,我无权在此项目中创建接收器。在关系数据库中,您可以简单地通过查询来完成。 @MarcinSzalenec 我更新了我的答案以包含替代解决方案。如果您只需要以下信息,那么来自___TABLES___
和INFORMATION_SCHEMA.TABLES
的数据就足够了。但如果需要更多元数据,使用日志记录方法会更好。
我点击了“已解决”,但该解决方案在我要分析的项目中不起作用。但是,它在我可以访问的其他项目中运行良好。所以,剩下的就是我工作的公司内部的批准问题了。以上是关于BigQuery - 查询“上次修改”等元数据的主要内容,如果未能解决你的问题,请参考以下文章
NSFileManager 是不是将修改日期等元数据与文件一起复制?