我有一个数据库,其记录可以追溯到2014年,我必须将其迁移到BigQuery,我认为使用分区表功能将有助于数据库的性能。
到目前为止,我通过Web UI加载了一小部分真实数据样本,当表已经分区时,所有数据都进入了一个分区,其中包含我运行查询的日期,这是预期的,公平。
我搜索了文档网站,然后遇到this,我不确定这是不是我要找的。 p>
我有两个问题:
1)在上面的示例中,他们在SELECT
查询中使用了装饰器,但是我也可以在INSERT
查询中使用它吗?
2)我正在使用Python client连接到BigQuery API,当我找到table.insert_data
方法时,我找不到任何专门插入分区的内容,我想知道我是否错过了它,或者我将不得不使用查询API来插入数据。
答案 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')
它应该插入正确的分区。