我有一个数据库,其记录可以追溯到 2014 年,我必须将其迁移到 BigQuery,并且我认为使用分区表功能将有助于提高数据库的性能。
到目前为止,我通过 Web UI 加载了一小部分真实数据样本,虽然表已经分区,但所有数据都转到一个分区,其中包含我运行查询的日期,这是预期的,公平地说。
我搜索了文档站点并遇到了 this ,我不确定这是否是我正在寻找的。p>
我有两个问题:
1) 在上面的示例中,他们在 SELECT
上使用了装饰器查询,但我可以在 INSERT
上使用它吗?还查询?
2) 我正在使用 Python client连接到 BigQuery API,我发现 table.insert_data
方法,我找不到任何专门指在分区中插入的内容,我想知道我是否错过了它,或者我将不得不使用查询 API 来插入数据。
最佳答案
对此进行了更多调查:
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')
它应该插入正确的分区。
关于python - 如何在各自分区上插入历史数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40788059/