今天做一个数据报表的需求,主要是提供产品数据监控指标。作为一个hive小白,第一次建表获得数据,生疏地不要不要的,当然遇到了许多很基础的小问题,不过为了督促自己进步,我决定每天自己写一份工作日记,总结当天工作的内容或者心路历程,啥都可以,感觉有点复盘的意思,应该还蛮有意义的。
问题1: 多表关联,连接Key值统一,但是各表连接的key值不全。比如有三个表x,y,z,我要从各个表中获得相应的字段,然后连接起来,但是,每个表中key值不一定会全,但需要最终结果产生有数据对应的各个key值以及相应的指标字段。
解决方法:使用full outer join, 将所有表连接在一起,然后将除了key以外字段的空值使用nvl函数转化为0。那么,最后该如何selecy key呢?有一个和nvl函数相似的函数coalesce,
-
语法: COALESCE(T v1, T v2, …)
-
返回参数中的第一个非空值;如果所有值都为NULL,那么返回NULL
这样,就select各表都有的key值。
问题2: 多表关联,连接条件也就是在on的后面,应该选择哪两个表的key值作为判断条件呢?
之所以提出这个问题,是因为,我在今天跑数的结果由于on所选择的表不同,结果也不一样。我很迷,现在还没有想明白是什么原因,如果之后弄明白了,会回来接着补充。
有点晚了,明天还要接着上班呢,给自己说一声加油,晚安。