我正在将为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?
答案 0 :(得分:0)
嗯,大多数情况下,我看到rowid上的联接是由于性能优化,但是在某些情况下,表中没有唯一的列组合。 请与拥有这些数据的人员联系,并对不同的键组合进行自己的分析,然后再与我们联系。