避免在bigquery中重复

时间:2017-04-24 10:00:11

标签: google-bigquery

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

  

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

你知道我怎么能像pk那样插入没有重复的东西(但不仅仅是在同一个插页中)? 此致

1 个答案:

答案 0 :(得分:9)

首先,让我们明确一些事实。因为你不能在没有重复的情况下插入。

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

每天最多只能对一张桌子进行96次DML(更新,删除)操作。这是设计的。它很低,因为它迫使你像BQ一样思考数据湖。

所以在Bigquery上你实际上让每个数据都进入,一切都只是通过设计追加。这意味着通过设计,您拥有一个数据库,可以为每次更新保留一个新行。因此,如果您想使用最新数据,则需要选择最后一行并使用它。

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

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

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