我在表中有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位唯一編號?
我在表中有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,<12 digit int generation>)來檢查規則。 – nightgaunt