0

我在表中有3列,即email_id,rid,final_id如何在紅移中生成12位唯一編號?

規則ridfinal_id

  1. 如果email_id都有相應的rid,使用ridfinal_id
  2. 如果email_id沒有相應的rid(即rid爲空),則生成一個唯一的12位數字並插入final_id字段。

如何在redshift中生成12位唯一編號?

+0

有一個辦法,你可以加入時間戳,RANDOM_NUMBER,ROW_NUMBER產生一個12位數字。但是,這不是一種內置的方法,更多的是一種黑客攻擊。還可以使用'coalesce(rid,<12 digit int generation>)來檢查規則。 – nightgaunt

回答

2

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; 
+0

有沒有其他方法?因爲我收到錯誤,如'無效的操作:權限被拒絕模式公開;'。我不能訪問公共模式。 –

+0

您也可以在自己的模式中創建函數。嘗試刪除「public.'位。 –

+0

重要 - 根據文檔 - 您需要: 撤銷PUBLIC語言PLPYTHONU的使用; 授予語言PLPYTHONU對udf_devs組的使用; 或 將語言PLPYTHONU上的用法授予用戶youruserid; –