从Netezza中ROWID上的JOIN转换为RedShift

时间:2019-02-18 13:00:57

标签: sql sql-update netezza

我正在将为Netezza编写的ETL查询转换为RedShift。我遇到了ROWID的一些问题,因为RedShift不支持它。我尝试使用谓词中的键列,基于生成的ROWID来实际执行变通方法。但是我很困惑,如果有多个联接操作将使用哪些列。所以有谁可以帮助我转换查询。我什至尝试在()函数上使用ROW_NUMBER(),但是它也行不通,因为行ID并不是所有行都唯一。

这是来自netezza的查询:

查询#1

console.log('hello\\world\\'.replace(/\\/g, ''));

查询#2

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?

1 个答案:

答案 0 :(得分:0)

嗯,大多数情况下,我看到rowid上的联接是由于性能优化,但是在某些情况下,表中没有唯一的列组合。 请与拥有这些数据的人员联系,并对不同的键组合进行自己的分析,然后再与我们联系。