首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >insertId等效于bq命令行

insertId等效于bq命令行
EN

Stack Overflow用户
提问于 2016-05-24 14:11:13
回答 1查看 727关注 0票数 0

我在做一些测试,以避免插入过程中出现双绞线。我注意到rows[].insertId可以允许避免双元,但似乎bq命令行没有这样的参数。我试过用--undefok,但没有效果。

代码语言:javascript
复制
 bq --apilog= --show_build_data insert --insert_id=201603210850 --template_suffix=_20160520  --dataset_id=mydataset --undefok=insert_id MYTEMPLATE.table myjson.json

我漏掉什么了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-24 14:36:17

insert_id只考虑流插入基,而不是加载作业。

这不是开关,而是被摄入的行的值。

begin

手动删除重复的

您可以使用以下手动处理来确保在完成流处理后不存在重复行。

1)将insertID作为列添加到表模式中,并将insertID值包含在每一行的数据中。2)流停止后,执行以下查询以检查是否重复:

代码语言:javascript
复制
SELECT max(count) FROM(
  SELECT <id_column>, count(*) as count
  FROM <table>
  GROUP BY id_column)

如果结果大于1,则存在重复项。

3)若要删除重复项,请执行以下查询。您应该指定目标表,允许大的结果,并禁用结果扁平。

代码语言:javascript
复制
SELECT *
FROM (
  SELECT
      *,
      ROW_NUMBER()
          OVER (PARTITION BY <id_column>)
          row_number,
  FROM <table>
)
WHERE row_number = 1

关于重复删除查询的说明:

  • 重复删除查询的更安全策略是以新表为目标。或者,您可以使用写处理WRITE_TRUNCATE来针对源表。
  • 重复删除查询将值为1的row_number列添加到表架构的末尾。您可以按特定的列名进行选择,以省略该列。
  • 为了使用删除的重复项查询活动数据,还可以使用重复删除查询在表上创建视图。请注意,对视图的查询成本将根据在视图中选择的列计算,这可能导致大字节扫描大小。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37416130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档