当我试图在BigQuery中分区目标表而使用数据流时,我得到错误。
一步一步复制如下:
- 启动从CloudSQL(MYSQL)到BigQuery的数据流
- 一旦流完成BigQuery中的所有表,暂停作业
- 表的分区之一
- 恢复作业
- 获取如下错误日志
====================================================
丢弃97个BigQuery不支持的事件,destination: 833537404433.Test_Membership_1.internal_Membership, reason code: BIGQUERY_UNSUPPORTED_PRIMARY_KEY_CHANGE, details:写BigQuery失败,因为一个不支持的主键更改:不支持添加主键到现有表.
{ad79ec insertId:"65 - 0000 - 24 - c7 a66e - 14223 - bbf970a@a1"
jsonPayload: {
背景:"CDC">
event_code:"UNSUPPORTED_EVENTS_DISCARDED">
message: "Discarded 97 unsupported events for BigQuery destination:
833537404433.Test_Membership_1.internal_Membership,包含原因代码:
BIGQUERY_UNSUPPORTED_PRIMARY_KEY_CHANGE, details: Failed to write to
BigQuery由于不支持主键更改:不支持向现有表添加主键…">
read_method:">
}
logName:"项目/gcp-everwash-wh-dw/日志/datastream.googleapis.com % 2 fstream_activity"
receiveTimestamp:"2022 - 11 - 22 - t22:08:38.620495835z"
资源:{2}
严重性:"WARNING">
时间戳:"2022 - 11 - 22 - t22:08:37.726075z"
}
你期望发生什么:?
我希望为通过DataStream插入BigQuery的某些表创建分区。
不支持对现有BigQuery表进行分区。您必须将分区添加到新表中。您可以根据本文档中提到的查询结果创建一个新的分区表,但是这种方法不适用于现有的源自数据流的表,因为不存在以正确顺序正确应用UPSERT操作所需的_CHANGE_SEQUENCE_NUMBER字段。因此,唯一的选择是在启动数据流之前使用分区/集群/主键预创建表,就像下面的DDL SQL示例查询一样。
CREATE TABLE `project.dataset.new_table`
(
`Primary_key_field` INTEGER PRIMARY KEY NOT ENFORCED,
`time_field` TIMESTAMP,
`field1` STRING,
#Just an example above. Add needed fields within the base table...
)
PARTITION BY
DATE(time_field)
CLUSTER BY
Primary_key_field #This must be an exact match of the specified primary key fields
OPTIONS(max_staleness = INTERVAL 15 MINUTE) #or whatever the desired max_staleness value is
有关更多信息,您可以查看此问题跟踪器。