数据生成函数¶
数据生成函数允许您生成数据。Snowflake 支持两种类型的数据生成函数:
随机型,这对于测试目的很有用。
这些函数每次都会生成一个随机值。每个值都独立于由函数的其他调用所生成的其他值。底层算法产生伪随机值,因此这些值不是真正随机或独立的,但在不了解算法的情况下,这些值基本上是不可预测的,通常是均匀分布的(如果样本量很大),并且彼此伪独立。
受控分布型,可用于为尚不具有唯一标识符的记录提供唯一 ID 编号。
这些函数生成的值并非独立的。例如,NORMAL 函数返回的值具有基于指定均值和标准差的近似“正态”(钟形)分布。因此,当函数尝试保持指定的分布时,生成的每个新值至少都会间接受到先前生成值的影响。再举一个例子,SEQ 函数族返回一系列值。
备注
UNIFORM 函数被列为受控分布函数,但旨在生成均匀分布的值。换句话说,它就像一个“随机”函数,但我们将其称为受控分布函数,因为分布是显式指定的,并且因为您可以选择在大样本量上生成非均匀值的数据生成函数。
本主题内容:
函数列表¶
函数名称 |
备注 |
---|---|
随机 |
|
返回伪随机 64 位整型。 |
|
返回指定长度的随机字符串。 |
|
返回一个随机 RFC 4122 兼容的 UUID,作为格式化字符串。 |
|
受控分布 |
|
返回一个正态分布的浮点数,并指定均值和标准差。 |
|
返回指定范围内均匀分布的随机数。 |
|
返回一个 Zipf 分布的整型。 |
|
返回单调递增的整数序列。 |
使用说明¶
随机分布函数是确定性的。
每个随机分布函数都采用一个生成器表达式
gen
,作为其最后一个实参。生成器表达式gen
可以是常量或变量:如果是常量,则随机分布函数的结果为常量(除非存在其他变量实参,该实参目前仅支持 RANDSTR 函数)。
如果是变量,则随机分布函数的结果为变量。
生成器表达式必须是 64 位整型类型,但允许隐式转换。任何可以转换为 64 位整型的表达式都可以用作生成器表达式。
任何随机分布函数的随机性都与其生成器表达式的随机性直接相关。出于大多数实际目的,RANDOM 数据生成函数是随机生成的整型值的最佳选择。
不能保证数据生成函数生成的序列是有序和无间隙的。这是因为这些数字可能以非同步的方式并行生成。
有关 Snowflake 中的序列的更多详细信息,请参阅 使用序列。