【发布时间】:2017-09-20 23:01:50
【问题描述】:
我正在使用 bigquery,并且在文档中说:
与传统的 RDBMS 不同,没有主要/次要或 行 ID 键。如果需要,请在表架构中标识一列 那个目的。
你知道我怎样才能像 pk 那样插入不重复的内容(但不仅仅是在同一个插入中)吗? 问候
【问题讨论】:
标签: google-bigquery
我正在使用 bigquery,并且在文档中说:
与传统的 RDBMS 不同,没有主要/次要或 行 ID 键。如果需要,请在表架构中标识一列 那个目的。
你知道我怎样才能像 pk 那样插入不重复的内容(但不仅仅是在同一个插入中)吗? 问候
【问题讨论】:
标签: google-bigquery
所以让我们首先澄清一些事实。因为你不能插入没有重复。
Bigquery 是一个适用于大型数据集的托管数据仓库,它是免费的,而不是传统数据库的替代品。
您每天最多只能对表执行 96 次 DML(更新、删除)操作。这是设计使然。它很低,因为它迫使您将 BQ 视为数据湖。
因此,在 Bigquery 中,您实际上是让所有数据进入,所有内容都是设计为只能追加的。这意味着根据设计,您有一个数据库,每次更新都会保存一个新行。因此,如果你想使用最新的数据,你需要选择最后一行并使用它。
我们实际上利用了我们添加到同一行的每个新更新的见解。例如,我们可以检测最终用户在注册流程中选择其国家/地区需要多长时间。因为我们有一个国家的下拉列表,它需要一些时间才能滚动到他的国家,并且指标显示了这一点,因为我们最终在 BQ 中有两行,一个之前选择的国家,一个之后的国家选择,并且根据时间选择我们是能够优化流程。现在,在我们的国家/地区下拉列表中,我们列出了前 5 个最近/经常出现的国家/地区,因此这些用户不再需要滚动并选择国家/地区,速度更快。
换句话说,您使用Streaming Insert 功能不断添加新行。然后你的 SQL 查询通常使用窗口函数to pick last row。
您不能更新行,也不能将 BigQuery limits DML statements 追加到记录中,每个表为 96。
【讨论】: