【发布时间】:2017-01-16 08:25:52
【问题描述】:
BigQuery 中是否有 AUTO_INCREMENT、SERIAL、IDENTITY 或序列之类的内容?
我知道 ROW_NUMBER https://cloud.google.com/bigquery/query-reference#row-number
但我想为表中的每一行保留一个生成的唯一 ID。
【问题讨论】:
-
ROW_NUMBER 会起作用,如果您运行查询来为每一行计算一个新的“id”列(并将结果保存为新表)。也就是说,我很好奇为什么你想这样做——BigQuery 并不是真正用于按键单行查找(你必须扫描整个表),我想一些列的其他组合将为该行提供更有意义的“身份”。这只是为了在下游的另一个系统中使用吗?
-
我希望能够将来自多个来源的数据集成到 BQ 中的同一个表中。那些数据源已经有了ID,但是可能会互相冲突,所以我想有一个统一的ID,方便以后访问。关于通过 ID 访问,我计划在 Datastore 中保留新旧 ID 之间的地图缓存版本,这样大部分时间我就不需要在 BQ 中进行单行查找。
-
有道理。我又添加了一些建议。如果这只是您的数据源的联合,则以命名空间为前缀的键可能是确保唯一性的最简单解决方案(如果您以后必须重新生成它,它将比 ROW_NUMBER 更稳定)。
-
听起来很有趣。我会试一试。谢谢:)
标签: google-bigquery google-cloud-platform