我在做一些测试,以避免插入过程中出现双绞线。我注意到rows[].insertId可以允许避免双元,但似乎bq命令行没有这样的参数。我试过用--undefok,但没有效果。
bq --apilog= --show_build_data insert --insert_id=201603210850 --template_suffix=_20160520 --dataset_id=mydataset --undefok=insert_id MYTEMPLATE.table myjson.json我漏掉什么了吗?
发布于 2016-05-24 14:36:17
insert_id只考虑流插入基,而不是加载作业。
这不是开关,而是被摄入的行的值。
手动删除重复的
您可以使用以下手动处理来确保在完成流处理后不存在重复行。
1)将insertID作为列添加到表模式中,并将insertID值包含在每一行的数据中。2)流停止后,执行以下查询以检查是否重复:
SELECT max(count) FROM(
SELECT <id_column>, count(*) as count
FROM <table>
GROUP BY id_column)如果结果大于1,则存在重复项。
3)若要删除重复项,请执行以下查询。您应该指定目标表,允许大的结果,并禁用结果扁平。
SELECT *
FROM (
SELECT
*,
ROW_NUMBER()
OVER (PARTITION BY <id_column>)
row_number,
FROM <table>
)
WHERE row_number = 1关于重复删除查询的说明:
https://stackoverflow.com/questions/37416130
复制相似问题