【问题标题】:Avoid duplicates in bigquery避免在 bigquery 中重复
【发布时间】:2017-09-20 23:01:50
【问题描述】:

我正在使用 bigquery,并且在文档中说:

与传统的 RDBMS 不同,没有主要/次要或 行 ID 键。如果需要,请在表架构中标识一列 那个目的。

你知道我怎样才能像 pk 那样插入不重复的内容(但不仅仅是在同一个插入中)吗? 问候

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    所以让我们首先澄清一些事实。因为你不能插入没有重复。

    Bigquery 是一个适用于大型数据集的托管数据仓库,它是免费的,而不是传统数据库的替代品

    您每天最多只能对表执行 96 次 DML(更新、删除)操作。这是设计使然。它很低,因为它迫使您将 BQ 视为数据湖。

    因此,在 Bigquery 中,您实际上是让所有数据进入,所有内容都是设计为只能追加的。这意味着根据设计,您有一个数据库,每次更新都会保存一个新行。因此,如果你想使用最新的数据,你需要选择最后一行并使用它。

    我们实际上利用了我们添加到同一行的每个新更新的见解。例如,我们可以检测最终用户在注册流程中选择其国家/地区需要多长时间。因为我们有一个国家的下拉列表,它需要一些时间才能滚动到他的国家,并且指标显示了这一点,因为我们最终在 BQ 中有两行,一个之前选择的国家,一个之后的国家选择,并且根据时间选择我们是能够优化流程。现在,在我们的国家/地区下拉列表中,我们列出了前 5 个最近/经常出现的国家/地区,因此这些用户不再需要滚动并选择国家/地区,速度更快。

    换句话说,您使用Streaming Insert 功能不断添加新行。然后你的 SQL 查询通常使用窗口函数to pick last row

    您不能更新行,也不能将 BigQuery limits DML statements 追加到记录中,每个表为 96。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-06
      • 2015-04-05
      • 1970-01-01
      • 1970-01-01
      • 2019-06-14
      • 2021-05-18
      • 2015-01-04
      • 2018-09-17
      相关资源
      最近更新 更多