使用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
相关产品推荐
相关产品推荐

