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 是不是将修改日期等元数据与文件一起复制?

使用 IMFSinkWriter 更改标题、作者等元数据

BigQuery:使用标准 SQL 查询多个数据集和表

在 bigquery 上查询项目中的所有数据集和表?

从 BigQuery 数据查询中查询名为 chartio 的 BI 工具时,最大数据大小是多少?

从新创建的 BigQuery 项目中查询任何示例数据集