Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Join 非相等配置单元查询的变通方法_Join_Hadoop_Mapreduce_Left Join_Hive - Fatal编程技术网

Join 非相等配置单元查询的变通方法

Join 非相等配置单元查询的变通方法,join,hadoop,mapreduce,left-join,hive,Join,Hadoop,Mapreduce,Left Join,Hive,我试图在配置单元上重写跟踪查询 select TFCT_CHARGE.SUBS_KEY, TFCT_CHARGE.PRODUCT_KEY, TFCT_CHARGE.CHARGE_NVAL, TFCT_CHARGE.B_SUBS_KEY, TFCT_CHARGE.DELETE_DT, HFCT_SUBS_SEGMENT.SEGMENT_KEY, TFCT_CHARGE.EVENT_DT, TFCT_CHARGE.DWH

我试图在配置单元上重写跟踪查询

select 
    TFCT_CHARGE.SUBS_KEY, 
    TFCT_CHARGE.PRODUCT_KEY, 
    TFCT_CHARGE.CHARGE_NVAL, 
    TFCT_CHARGE.B_SUBS_KEY, 
    TFCT_CHARGE.DELETE_DT, 
    HFCT_SUBS_SEGMENT.SEGMENT_KEY, 
    TFCT_CHARGE.EVENT_DT, 
    TFCT_CHARGE.DWH_SRC_TABLE_KEY
  from
TFCT_CHARGE LEFT OUTER JOIN HFCT_SUBS_SEGMENT
ON (
TFCT_CHARGE.B_SUBS_KEY = HFCT_SUBS_SEGMENT.SUBS_KEY and
TFCT_CHARGE.EVENT_DT >= HFCT_SUBS_SEGMENT.EFF_DT    and
TFCT_CHARGE.EVENT_DT < HFCT_SUBS_SEGMENT.EXP_DT     and
HFCT_SUBS_SEGMENT.SEGMENT_TYPE_KEY = 1)
选择
TFCT_CHARGE.SUBS_键,
TFCT\费用。产品\密钥,
收费,
TFCT_CHARGE.B_SUBS_键,
TFCT\u CHARGE.DELETE\u DT,
HFCT_接头_段。段_键,
TFCT\u CHARGE.EVENT\u DT,
TFCT\u CHARGE.DWH\u SRC\u表\u键
从…起
TFCT\U充电左外连接HFCT\U接头\U段
在(
TFCT_CHARGE.B_SUBS_KEY=HFCT_SUBS_SEGMENT.SUBS_KEY和
TFCT\u CHARGE.EVENT\u DT>=HFCT\u SUBS\u SEGMENT.EFF\u DT和
TFCT\u CHARGE.EVENT\u DT
但也有不平等的质疑。 谁能告诉我一些解决办法吗? Tnx

这很容易

选择
TFCT_CHARGE.SUBS_键,
TFCT\费用。产品\密钥,
收费,
TFCT_CHARGE.B_SUBS_键,
TFCT\u CHARGE.DELETE\u DT,
HFCT_接头_段。段_键,
TFCT\u CHARGE.EVENT\u DT,
TFCT\u CHARGE.DWH\u SRC\u表\u键
从…起
TFCT\U充电内部连接HFCT\U接头\U段
在(
TFCT\U CHARGE.B\U SUB\U KEY=HFCT\U SUB\U段.SUB\U KEY
HFCT_接头_段。段_类型_键=1)
哪里
TFCT\u CHARGE.EVENT\u DT>=HFCT\u SUBS\u SEGMENT.EFF\u DT和
TFCT\u CHARGE.EVENT\u DT
要模拟非等左外部联接:

  • 创建具有添加的序列行号的左表副本
  • 进行内部联接:
  • 通过序列左连接:

  • 有关代码,请参见我的答案:

    您的答案不考虑左外连接。您将缺少不在内部联接中的行
    select 
        TFCT_CHARGE.SUBS_KEY, 
        TFCT_CHARGE.PRODUCT_KEY, 
        TFCT_CHARGE.CHARGE_NVAL, 
        TFCT_CHARGE.B_SUBS_KEY, 
        TFCT_CHARGE.DELETE_DT, 
        HFCT_SUBS_SEGMENT.SEGMENT_KEY, 
        TFCT_CHARGE.EVENT_DT, 
        TFCT_CHARGE.DWH_SRC_TABLE_KEY
      from
    TFCT_CHARGE INNER JOIN HFCT_SUBS_SEGMENT
    ON (
    TFCT_CHARGE.B_SUBS_KEY = HFCT_SUBS_SEGMENT.SUBS_KEY
    HFCT_SUBS_SEGMENT.SEGMENT_TYPE_KEY = 1)
    where
    TFCT_CHARGE.EVENT_DT >= HFCT_SUBS_SEGMENT.EFF_DT    and
    TFCT_CHARGE.EVENT_DT < HFCT_SUBS_SEGMENT.EXP_DT     and