ハイブでクエリビルドを行っていますが、そのクエリは以下のとおりです。左外部結合を行っているときのハイブの日付フィルタ
*
Select * from CSS407
LEFT OUTER JOIN PROD_CORE.SERV_ACCT_ISVC_LINK SASP
ON CSS407.TABLE_ABBRV_CODE = 'SACT'
AND CSS407.EVENT_ITEM_REF_NUM = SASP.Serv_Acct_Id
AND to_date(CSS407.EVENT_RTS_VAL) >= SASP.Acct_Serv_Pnt_Strt_Dt
AND to_date(CSS407.EVENT_RTS_VAL) < SASP.Acct_Serv_Pnt_End_Dt
LEFT OUTER JOIN PROD_CORE.CUST_ACCT_SA_LINK ASA
ON CSS407.TABLE_ABBRV_CODE = 'SACT'
AND CSS407.EVENT_ITEM_REF_NUM = ASA.Serv_Acct_Id
AND CSS407.EVENT_RTS_VAL_UTC_DTTM >= ASA.Acct_Relt_Strt_Dttm
AND CSS407.EVENT_RTS_VAL_UTC_DTTM < ASA.Acct_Relt_End_Dttm
LEFT OUTER JOIN PROD_CORE.CUST_SA_LINK ASAT
ON CSS407.TABLE_ABBRV_CODE = 'TACT'
AND CSS407.EVENT_ITEM_REF_NUM = ASAT.Serv_Acct_Id
AND CSS407.EVENT_RTS_VAL_UTC_DTTM >= ASAT.Acct_Relt_Strt_Dttm
AND CSS407.EVENT_RTS_VAL_UTC_DTTM < ASAT.Acct_Relt_End_Dttm
*
私はハイブで、上記の表を実行していたとき、私は
「左と右の両方の別名は 『SASP』を登録しようで遭遇した」以下のエラーを取得しています
さらに調査したところ、条件付きで結合のフィルタの間に日付を使用できないことがわかりました。すべての投稿で誰もその条件にどこのフィルタを挿入するよう求めています。
しかし、私たちのケースでは、フィルタ間でその日付を移動している場合、条件が満たされていない場合、左外部結合が満足のいくものではないため、データが得られません。
私はHIVEで実行中にこの問題を得て、それは助けてくださいTeradataのとOracle
で正常に動作しています。
複数のLEFT JOIN –
P.s.を使用してそれ以外の解決方法がある可能性があるので、実際のSELECT句を(おそらく '選択* 'ではなく)共有してください。私はあなたが各結合テーブルから単一のレコードを取得すると仮定? –
結合テーブルに主キーがありますか? –