可以确认下 union all 之后的数据是不是根据 group by 的 key 相互覆盖的情况。
在 2020-11-05 13:24:20,"夜思流年梦" <[email protected]> 写道: > > > > > > > > > >flink 版本是1.11的版本了 > > > > > > > > >在 2020-11-05 00:02:12,"hailongwang" <[email protected]> 写道: >>Hi liaobiao, >> >> >>你的 flink 版本是什么呢? >>根据你的 SQL,如果是版本是 <= 1.10 的话,会根据 MetaDataHander 识别出你的 group by 后面的 key 作为 >>upsert key,这样就会产生覆盖的情况。 >>你看下结果是否是这种情况的? >> >> >>Best, >>Hailong Wang >> >> >> >> >>在 2020-11-04 17:20:23,"夜思流年梦" <[email protected]> 写道: >>>开发者好: >>> 目前有此场景:算不同部门的总收入和所有部门的总收入,打算把两部分SQL union all ,但是实际情况发现 >>> union all的时候会丢一部分数据,要么是各个部门的数据少了,要么是所有部门的总收入少了 >>> 如果把union all 的两段SQL 分别独立出来,插入同一张表,那么数据就是正常的,不知道是否是bug还是使用方法不对 >>> >>> >>> >>> >>>原sql : >>> >>> >>>insert into dws_XXXX >>> >>> >>>select >>>0 as id >>>,cast (DATE_FORMAT(LOCALTIMESTAMP, 'yyyyMMddHH') as bigint) as ftime >>>,case >>>when dept_name like '%XX%' then 'X1' >>>when dept_name = 'xXX' then 'X2' >>>else 'X3' end as paytype >>>,count(orderid) as paynum_h >>>,round(sum(amt)) as paymoney_h >>>from dwd_XXX >>>where write_time >=DATE_FORMAT(LOCALTIMESTAMP, 'yyyy-MM-dd') >>>group by >>>DATE_FORMAT(LOCALTIMESTAMP, 'yyyyMMddHH'), >>>case >>>when dept_name like '%XX%' then 'X1' >>>when dept_name = 'xXX' then 'X2' >>>else 'X3' end ; >>> >>> >>> >>> >>>union all >>> >>> >>> >>> >>>select 0 as id >>>,cast (DATE_FORMAT(LOCALTIMESTAMP, 'yyyyMMddHH') as int) as ftime >>>,'all' as paytype >>>,count(orderid) as paynum_h >>>,round(sum(amt)) as paymoney_h >>>from dwd_XXX >>>where write_time >=DATE_FORMAT(LOCALTIMESTAMP, 'yyyy-MM-dd') >>>group by DATE_FORMAT(LOCALTIMESTAMP, 'yyyyMMddHH') ;
