mysql - 在 BigQuery 中附加时忽略重复记录

标签 mysql google-bigquery

我们正在将数据从 MySql 写入 BigQuery。我们设置了一些指标,例如

  • 插入 - 如果是第一次添加记录,则在“指示符”字段中使用“I”保存
  • 更新 - 如果记录有一些更新的数据,则在“指示符”字段中将其保存为“U”,如果未更改,则忽略重复记录。

但是在“更新”的情况下,它也会写入重复的记录,甚至没有改变。以下是我们当前用于将数据插入 BigQuery 表的查询。我们可以对此查询进行哪些更改?

"insert into `actual_table` 

(
    Id,
   ...
)
select
temp.Id,
...
case when actual.Id is null then 'I'
when actual.Id is not null and actual.field1<>temp.field1 then 'U'
end as Indicator,
FROM `temp_table` temp 
left outer join `actual_table` actual
on temp.Id= actual.Id"

实际表是 BigQuery 中的表,而临时表是 BigQuery 上的临时表。每次我们从 MySql 读取数据时,我们都会将其存储在临时表中。

谢谢

最佳答案

我喜欢 BigQuery 的另一个选项是使用合并 DML 进行插入,如果该套件适合您的用例,那么这是一个非常简洁的解决方案。您可以在这个link中查看更多详细信息。

SQL 示例:

MERGE
    `mytable` as tgt
USING
    `mytable` as src
ON FALSE
WHEN NOT MATCHED AND src._PARTITIONTIME = '2019-02-21'
THEN INSERT (_PARTITIONTIME, fields...) VALUES (_PARTITIONTIME, fields...)
WHEN NOT MATCHED BY SOURCE AND tgt._PARTITIONTIME = '2019-02-21'
THEN DELETE

关于mysql - 在 BigQuery 中附加时忽略重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55222951/

相关文章:

php - 需要尚未提交数据的表的表关系流程

mysql - SELECT * FROM db.table TABLESAMPLE(10%)

apache-spark - Google Cloud Dataproc 删除 BigQuery 表不起作用

google-bigquery - BQ 项目中表数量的硬性限制

带有自动增量的 MySQL 插入 - 是否需要插入忽略以避免并发问题?

java - Spring JDBC - 无法连接到数据库

google-sheets - 通过 pandas_gbq 将 bigquery 谷歌表联合数据源读取到云数据实验室的问题

python - 与 Airflow 的集成测试

google-bigquery - BigQuery中的IS NULL函数出现问题

php - 在 PHP 中的 mysqli 准备语句中使用 REGEXP