【问题标题】:Create a column of UUIDs in Google BigQuery在 Google BigQuery 中创建一列 UUID
【发布时间】:2018-10-02 00:25:53
【问题描述】:

Google BigQuery 不支持 UUID 作为数据类型。那么,哪个选项更好地存储它:

  • STRING: 格式为 8-4-4-4-12 的字符串
  • BYTES:16 字节(128 位)数组

【问题讨论】:

  • 哪些因素决定哪个更好?更低的花费?表现?与使用 UUID 的其他系统的兼容性?您是在问如何在 BigQuery 中生成 UUID,或者只是如何存储它们?
  • 谢谢。我的意图是提出一个通用问题来讨论不同场景中的两种实现。在我的具体情况下,我只关心兼容性,因为成本和性能不是瓶颈。

标签: google-bigquery uuid


【解决方案1】:

编辑:BigQuery 现在支持function called GENERATE_UUID。这将返回一个STRING,其中包含五组中的 32 个十六进制数字,由连字符分隔,格式为 8-4-4-4-12。

原创内容:

一些权衡的讨论:

使用STRING

  • UUID 与其他系统中的表示兼容,例如,如果您导出为 CSV,然后想要与其他地方的导出合并。
  • UUID 与 BigQuery 的 probably UUID implementation 兼容。您将能够使用函数生成相同形式的 UUID(当实现该特性时)。
  • 如果您稍后决定将 UUID 表示为 BYTES,则可以使用 UDF 进行转换。
  • 缺点:比较可能不如 BYTES 快,具体取决于操作员,因为字符串比较必须考虑 UTF-8 编码。 (听起来这对您来说不是问题)。
  • 缺点:存储成本较高。 (听起来这对您来说不是问题)。

使用BYTES

  • UUID 存储更紧凑;存储更便宜,比较更快。
  • 如果您决定稍后将 UUID 表示为 STRINGs,您可以使用 UDF 转换它们。
  • 缺点:导出后 UUID 与其他系统不兼容,也可能与 BigQuery 的实现不兼容。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-23
  • 2014-01-07
  • 1970-01-01
  • 2019-12-26
  • 1970-01-01
  • 2021-02-21
相关资源
最近更新 更多