在 Google BigQuery 中创建一列 UUID
Create a column of UUIDs in Google BigQuery
Google BigQuery doesn't support UUID 作为数据类型。那么,哪个选项更好地存储它:
STRING
:格式为 8-4-4-4-12 的字符串
BYTES
:16 字节数组(128 位)
编辑:BigQuery 现在支持 function called GENERATE_UUID
。这个 returns a 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 表示为
STRING
s,则可以使用 UDF 转换它们。
- 缺点:UUID 导出后与其他系统不兼容,并且可能与 BigQuery 的实现也不兼容。
Google BigQuery doesn't support UUID 作为数据类型。那么,哪个选项更好地存储它:
STRING
:格式为 8-4-4-4-12 的字符串
BYTES
:16 字节数组(128 位)
编辑:BigQuery 现在支持 function called GENERATE_UUID
。这个 returns a 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 表示为
STRING
s,则可以使用 UDF 转换它们。 - 缺点:UUID 导出后与其他系统不兼容,并且可能与 BigQuery 的实现也不兼容。