You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用BigQuery API获取表最后修改日期遇Python返回None问题

解决BigQuery Python客户端获取表modified日期为None的问题

我之前也碰到过一模一样的情况!问题根源在于你用dataset.list_tables()返回的是轻量级的TableListItem对象,它只包含表的基础元数据(比如table_id、created时间),并不包含modified字段——这就是为什么你拿到的结果一直是None。而BigQuery API Explorer默认会返回更完整的元数据,所以能正常看到last_modified_date。

要获取完整的表元数据,你需要调用client.get_table()方法来获取每个表的完整Table对象,这样就能拿到正确的修改时间了。修改后的代码如下:

from google.cloud import bigquery

client = bigquery.Client(project='temp')
datasets = list(client.list_datasets())

for dataset in datasets:
    print(dataset.dataset_id)
    # 遍历数据集里的表项
    for table_item in dataset.list_tables():
        # 通过表引用获取完整的Table对象
        table = client.get_table(table_item.reference)
        print(table.table_id)
        print(table.created)
        print(table.modified)  # 现在就能拿到正确的修改时间了

补充说明:

  • table_item.reference是表的完整引用对象,包含了项目、数据集和表ID的路径信息,用它调用get_table()就能获取到包含所有元数据的Table对象。
  • 完整的Table对象里的modified字段,对应BigQuery API中的lastModifiedTime字段。

如果你的数据集里表数量很多,也可以考虑批量获取元数据来优化性能,但对于大多数常规场景,上面的代码已经能完美解决问题啦。

内容的提问来源于stack exchange,提问作者user9322003

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:46:48