Конвертировать из JOIN на ROWID в Netezza в RedShift - PullRequest
0 голосов
/ 18 февраля 2019

Я конвертирую запросы 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

1 Ответ

0 голосов
/ 19 февраля 2019

Что ж, большую часть времени я видел соединения в rowid, это связано с оптимизацией производительности, но в некоторых случаях в таблице нет уникальной комбинации столбцов.Пожалуйста, поговорите с людьми, владеющими этими данными, и проведите собственный анализ различных комбинаций клавиш, а затем вернитесь к нам.

...