Я конвертирую запросы ETL, написанные для Netezza, в RedShift.Я сталкиваюсь с некоторыми проблемами с ROWID, потому что он не поддерживается в RedShift.Я попытался использовать ключевые столбцы в предикатах, на основе которых генерируется ROWID, чтобы фактически сделать обходной путь.Но я запутался, какие столбцы будут использоваться, если есть несколько операций соединения.Так есть ли кто-нибудь, кто может помочь мне преобразовать запрос.Я даже пытался использовать функцию ROW_NUMBER () over (), но она также не работает, потому что идентификаторы строк не будут уникальными для всех строк.
Вот запросы от netezza:
Запрос № 1
CREATE TEMP TABLE TMPRY_DELTA_UPD_1000 AS
SELECT
nvl(PT.HOST_CRRNCY_SRRGT_KEY,-1) as HOST_CRRNCY_SRRGT_KEY,
delta1.ROWID ROW_ID
FROM TMPRY_POS_TX_1000 PT
LEFT JOIN TMPRY_TX_CSTMR_1000 TC ON PT.TX_SRRGT_KEY = TC.TX_SRRGT_KEY AND PT.UPDT_TMSTMP > '2017-01-01'
AND PT.INS_TMSTMP < '2017-01-01' AND PT.DVSN_NBR = 70
JOIN INS_EDW_CP.DM_TX_LINE_FCT delta1 ON PT.TX_SRRGT_KEY = delta1.TX_SRRGT_KEY
WHERE
(
delta1.HOST_CRRNCY_SRRGT_KEY <> PT.HOST_CRRNCY_SRRGT_KEY OR
)
AND PT.DVSN_NBR = 70;
Запрос № 2
UPDATE INS_EDW_CP..DM_TX_LINE_FCT base
SET
base.HOST_CRRNCY_SRRGT_KEY = delta1.HOST_CRRNCY_SRRGT_KEY,
)
FROM TMPRY_DELTA_UPD_1000 delta1
WHERE base.ROWID = delta1.ROW_ID;
Как я могу преобразовать запрос № 2