我在一个表中有 3 列,即email_id, rid, final_id。
rid和的规则final_id:
- 如果
email_id有对应的rid,rid则用作final_id。 - 如果
email_id没有对应的rid(即为rid空),则生成一个唯一的 12 位数字并插入到final_id字段中。
如何在红移中生成 12 位唯一数字?
我在一个表中有 3 列,即email_id, rid, final_id。
rid和的规则final_id:
email_id有对应的rid,rid则用作final_id。email_id没有对应的rid(即为rid空),则生成一个唯一的 12 位数字并插入到final_id字段中。如何在红移中生成 12 位唯一数字?
默认情况下,AWS Redshift 中没有 UUID 函数。但是,使用Python 用户定义函数,您可以轻松地在 Redshift 中创建 UUID 函数。
如果你想要随机 UUID:
CREATE OR REPLACE FUNCTION public.fn_uuid()
RETURNS character varying AS
' import uuid
return uuid.uuid4().__str__()
'
LANGUAGE plpythonu VOLATILE;
如果你想要顺序 UUID :
CREATE OR REPLACE FUNCTION public.fn_uuid()
RETURNS character varying AS
' import uuid
return uuid.uuid1().__str__()
'
LANGUAGE plpythonu VOLATILE;
只是添加到接受的响应中:
使用uuid.uuid1().__str__()oruuid.uuid4().__str__()会给你像XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX. 这作为 uuid 是完全有效的,但是摆脱散列的一种巧妙方法是使用hex属性:
CREATE OR REPLACE FUNCTION public.fn_uuid()
RETURNS character varying AS
' import uuid
return uuid.uuid4().hex
'
LANGUAGE plpythonu VOLATILE;
或者
CREATE OR REPLACE FUNCTION public.fn_uuid()
RETURNS character varying AS
' import uuid
return uuid.uuid1().hex
'
LANGUAGE plpythonu VOLATILE;
这将为您提供没有哈希的值,因此只有 32 个十六进制字符。