gpt4 book ai didi

google-bigquery - 如何为BigQuery表中的记录生成唯一键值?

转载 作者:行者123 更新时间:2023-12-04 13:37:53 26 4
gpt4 key购买 nike

在BigQuery表中插入记录时如何分配代理键?
类似于使用Sequence生成唯一值或NextVal吗?

最佳答案

如果您希望在BigQuery中生成代理键值,则最好避免使用ROW_NUMBER OVER()选项及其变体。引用有关替代键的BigQuery帖子:

To implement ROW_NUMBER(), BigQuery needs to sort values at the root node of the execution tree, which is limited by the amount of memory in one execution node.



即使有少量记录,这总是会导致您遇到问题。

有两种选择:

选项1-GENERATE_UUID()

由于代理键没有业务意义,只是生成的唯一键,可在数据仓库中使用,因此您只需使用BigQuery中的 GENERATE_UUID()函数调用即可生成它们。这为您提供了一个通用的唯一UUID,您可以将其用作代理键值。

一个缺点是该 key 将是32位而不是8字节的INT64值。因此,如果您有大量记录,这可能会增加数据的存储大小。

选项2-生成唯一的哈希

第二种选择是使用哈希函数生成唯一的has。这涉及更多,因为您将需要查找列的组合和/或随机其他输入,以确保您永远不会两次生成相同的值。

某些哈希函数还会输出32字节的值,因此您不会保存在存储器上,但是FARM_FINGERPRINT()哈希函数将输出INT64值,可以节省一些存储空间。因此,您可以通过执行以下操作来利用选项1和选项2生成唯一的整数代理键: FARM_FINGERPRINT(GENERATE_UUID())

关于google-bigquery - 如何为BigQuery表中的记录生成唯一键值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33765824/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com