我在GCP中使用MySQL源和BQ目标的datastream。我注意到,如果源表定义了主键,那么datastream元数据字段不包括“is_deleted”列。此外,BQ表(在查询时)复制MySQL表,而不是所有发生的事件。(例如,如果我的MySQL表有5行,我修改了第1行并删除了第2行);我希望BQ表中有7行(5行+ 1修改+ 1删除)。然而,当我查询(SELECT * FROM)BQ表时,它只有4行(复制结果MySQL表))。如果源表没有主键,则上面的示例按预期工作。
vc6uscn91#
如faq所示,Datastream将更改事件直接写入BigQuery数据集,其中更改与现有数据连续合并(UPSERT)。Datastream使用upsert来更新表,当有主键存在时,bigquery可以根据主键进行upsert,所以表会保持和源表一样,当主键不存在时,我猜bigquery不能合并行。但我不知道是否有设置可以改变这种行为。
1条答案
按热度按时间vc6uscn91#
如faq所示,
Datastream将更改事件直接写入BigQuery数据集,其中更改与现有数据连续合并(UPSERT)。
Datastream使用upsert来更新表,当有主键存在时,bigquery可以根据主键进行upsert,所以表会保持和源表一样,当主键不存在时,我猜bigquery不能合并行。
但我不知道是否有设置可以改变这种行为。