Google bigquery 流式传输到基于列的分区Bigquery表;不允许;?

Google bigquery 流式传输到基于列的分区Bigquery表;不允许;?,google-bigquery,google-python-api,Google Bigquery,Google Python Api,是否支持将数据流式传输到列分区的BigQuery表中?我遇到了问题,出现了以下错误: BadRequest:400 POST…$20180410/插入全部:流式传输到基于列的分区表的元数据分区…$20180410是不允许的 读取BigQuery时,它表示允许流式传输到分区表,但所有示例都是针对摄取时间分区的。我看不到对较新的基于列的分区的引用 它是否得到支持,而我只是做错了? 例如,当我显式添加分区后缀($YYYYMMDD)时,就会发生错误。当我不使用后缀时,写操作会成功,但看起来它实际上并没有

是否支持将数据流式传输到列分区的BigQuery表中?我遇到了问题,出现了以下错误:

BadRequest:400 POST…$20180410/插入全部:流式传输到基于列的分区表的元数据分区…$20180410是不允许的

读取BigQuery时,它表示允许流式传输到分区表,但所有示例都是针对摄取时间分区的。我看不到对较新的基于列的分区的引用

它是否得到支持,而我只是做错了? 例如,当我显式添加分区后缀($YYYYMMDD)时,就会发生错误。当我不使用后缀时,写操作会成功,但看起来它实际上并没有分区

以下是我的示例代码:

我们有一个包含几列的表,我们可以这样说:

date: DATE (partitioned field)
name: STRING
count: INTEGER
我正在尝试通过以下方式进行流媒体插入:

from google.cloud import bigquery

data = [
    {'date': date('2018-04-10'), 'name': 'x', 'count': 10},
    {'date': date('2018-04-10'), 'name': 'y', 'count': 5},    
]
client = bigquery.Client(...)
table_ref = client.dataset(dataset).table(tableid + '$20180410')
schema = client.get_table(table_ref).schema

# Raises the 400 Bad Request above.
result = client.insert_rows(table_ref, data, selected_fields=schema)

已更新/已解决(帽子提示,感谢陈雷。讨论请参见评论)

要流式传输到分区表中,请不要在tableid上追加$YYYMMDD。BigQuery将为您进行分区,但是…它似乎是一个单独的阶段。我的记录在几分钟内从流缓冲区显示在表中,但需要几个小时才能正确分区


当您使用摄取时间分区并可以查询_分区伪列时,这更容易判断。对于列分区,除了检查分区并查看记录是否消失之外,我没有找到一个很好的方法来知道它是否已分区。

请尝试删除$20180410当我删除分区时“$20180410”写入成功,但我可以说数据实际上没有分区。如果然后我尝试通过
bq rm…$20180410
从分区中删除数据,则不会删除行。不允许流式传输到列分区表的特定分区。您可以不带后缀地流到表中,数据将根据分区字段值分布到分区。删除分区时,数据可能仍在流缓冲区中。您能在几分钟内尝试删除吗?您能与Projectd和datasetid共享您的完整表名吗?分区表的流缓冲区中仍然存在的任何内容都将显示在未分区分区中,直到它被提取,此时它将显示在正确的分区中。到目前为止,当您在查询中使用分区过滤器时,流式缓冲区数据会自动带入查询结果。批量上传文件也是如此。