如何在各自的分区上插入历史数据

时间:2016-11-24 13:46:23

标签: python google-bigquery

我有一个数据库,其记录可以追溯到2014年,我必须将其迁移到BigQuery,我认为使用分区表功能将有助于数据库的性能。

到目前为止,我通过Web UI加载了一小部分真实数据样本,当表已经分区时,所有数据都进入了一个分区,其中包含我运行查询的日期,这是预期的,公平。

我搜索了文档网站,然后遇到this,我不确定这是不是我要找的。

我有两个问题:

1)在上面的示例中,他们在SELECT查询中使用了装饰器,但是我也可以在INSERT查询中使用它吗?

2)我正在使用Python client连接到BigQuery API,当我找到table.insert_data方法时,我找不到任何专门插入分区的内容,我想知道我是否错过了它,或者我将不得不使用查询API来插入数据。

1 个答案:

答案 0 :(得分:1)

对此进行了更多调查:

1)我认为我根本没有设法运行INSERT查询,但这对我来说没什么问题,因为......

2)事实证明可以使用Python客户端直接插入分区,但这对我来说并不明显:

我正在使用此代码段将一些数据插入表格中:

from google.cloud import bigquery

items = [
    (1, 'foo'),
    (2, 'bar')
]
client = bigquery.Client()
dataset = client.dataset('<dataset>')
table = dataset.table('<table_name>')
table.reload()
print table.insert_data(items)

关键是将$和日期(例如20161201)附加到选择器中的表名称,如下所示:

table = dataset.table('<table_name>$20161201')

它应该插入正确的分区。