2017-02-23 41 views
0

我在BigQuery数据集中有一个表格,并试图找出表格最后一次通过BigQuery客户端API进行修改的时间。使用BigQuery客户端API提取有关表格的元数据

我曾尝试(在Python)

from gcloud import bigquery 
client = bigquery.Client(project="my_project") 
dataset = client.dataset("my_dataset") 
tables = dataset.list_tables() 
table = tables[0][5] # Extract the table that I want 

我可以确认我已经运行了print(table.name)右表,但我不知道如何获得表的元数据。特别是,我想知道如何找出表最后修改的时间。 (我比其他编程语言更熟悉它)我不介意如果答案是Python或Javascript(我想我将不得不在后者中实施)。

回答

1

在引擎盖下,tables = dataset.list_tables()正在向Tables.list发出API请求。此请求的结果不包含所有表格元信息 - 例如上次修改。

Tables.get这种类型的表信息需要API请求。为了提出这个请求,你需要在桌面上调用reload()。例如:

bigquery_service = bigquery.Client() 
dataset = bigquery_service.dataset("<your-dataset>") 
tables = dataset.list_tables() 
for table in tables: 
    table.reload() 
    print(table.modified) 

在我的测试/数据集,这个打印:

2016-12-30 08:57:15.679000+00:00 
2016-12-18 23:57:24.570000+00:00 
2016-12-19 05:18:28.371000+00:00 

详情请参阅here(Github上)和here(Python文档)。

+0

This_almost_ works。唯一的区别是'dataset.list_tables()'返回一个元组(至少对我来说),其中的第一个参数是表的列表。因此我使用的修改是'tables = dataset.list_tables()[0]' –

+0

一个元组?你使用的是什么版本.. –

+0

我使用Python v2.7.13和gcloud v0.18.3 –

相关问题