可以先对null值进行特殊处理 将其赋值为特殊值 然后进行join 统计后再将其进行恢复
示例:
create table if not exists dwd_db_tmp.dwd_mall_clue_custome_ids_tmp as
select
c.departmentid
,a.type
,nvl(d.labelid,'0') as labelid
,a.customerid
,a.dt
from xxx
表示将临时dwd数据的labelid进行特殊处理,
后面的计算过程中进行join
e.departmentid = f.departmentid
and e.type = f.type
and e.dt = f.dt
and e.labelid = f.labelid
最后对计算结果进行还原
,case when e.labelid = '0' then null else e.labelid end as labelid --标签id
null 值在计算过程中join不上 结果全是null 需要注意。
改过程赋值特殊值需要注意null值的占比,以及判断null值是否需要过滤。
在确定不能过滤的情况下,如果该字段的null值占比比较高且数据量较大的情况下则有可能导致数据倾斜。