如何在红移中生成12位唯一编号?
我在表中有3列,即email_id
,rid
,final_id
。如何在红移中生成12位唯一编号?
规则rid
和final_id
:
- 如果
email_id
都有相应的rid
,使用rid
为final_id
。 - 如果
email_id
没有相应的rid
(即rid
为空),则生成一个唯一的12位数字并插入final_id
字段。
如何在redshift中生成12位唯一编号?
从Creating a UUID function in Redshift:
默认情况下没有在AWS红移没有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;
有没有其他方法?因为我收到错误,如'无效的操作:权限被拒绝模式公开;'。我不能访问公共模式。 –
您也可以在自己的模式中创建函数。尝试删除“public.'位。 –
重要 - 根据文档 - 您需要: 撤销PUBLIC语言PLPYTHONU的使用; 授予语言PLPYTHONU对udf_devs组的使用; 或 将语言PLPYTHONU上的用法授予用户youruserid; –
有一个办法,你可以加入时间戳,RANDOM_NUMBER,ROW_NUMBER产生一个12位数字。但是,这不是一种内置的方法,更多的是一种黑客攻击。还可以使用'coalesce(rid,)来检查规则。 – nightgaunt