如何禁止向BigQuery加载重复的行?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何禁止向BigQuery加载重复的行?相关的知识,希望对你有一定的参考价值。
我想知道有没有一种方法可以禁止从BigQuery中加载重复的行?
基于 本文 我可以重复复制整个表或表的一个分区。
重复数据删除整个表。
CREATE OR REPLACE TABLE `transactions.testdata`
PARTITION BY date
AS SELECT DISTINCT * FROM `transactions.testdata`;
要根据定义在表中的分区来重复数据删除一个表。WHERE
子句。
MERGE `transactions.testdata` t
USING (
SELECT DISTINCT *
FROM `transactions.testdata`
WHERE date=CURRENT_DATE()
)
ON FALSE
WHEN NOT MATCHED BY SOURCE AND date=CURRENT_DATE() THEN DELETE
WHEN NOT MATCHED BY TARGET THEN INSERT ROW
如果没有办法不允许重复,那么这是否是一个合理的重复复制表的方法?
答案
BigQuery
没有一个机制像 限制 可以在传统DBMS中找到。换句话说,你不能设置一个主键或类似的东西,因为...。BigQuery
不是专注于事务,而是专注于快速分析和可扩展性。你应该把它看作是一个数据湖,而不是一个具有唯一性属性的数据库。
如果你有一个现有的表,并且需要去重复它,上述的方法就可以了。如果你需要你的表在默认情况下具有唯一性行,并希望在你的表中以编程方式插入唯一性行,而不求助于外部资源,我可以向你建议一个变通方法。
- 首先将你的数据插入到一个临时表中
然后,在你的临时表中运行一个查询,并将结果保存到你的实际表中。这一步可以用一些不同的方法来编程完成。
最后,放弃临时表。和上一步一样,这一步可以使用计划查询或bq命令来完成。
希望对大家有所帮助
以上是关于如何禁止向BigQuery加载重复的行?的主要内容,如果未能解决你的问题,请参考以下文章