1. 引言
在前一篇中,解决了Hive表中复杂数据结构平铺化以导入Kylin的问题,但是平铺之后计算广告日志的曝光PV是翻倍的,因为一个用户对应于多个标签。所以,为了计算曝光PV,我们得另外创建视图。
分析需求:
- 每个DSP上的曝光PV,标签覆盖的曝光PV;
- 累计曝光PV,累计标签覆盖曝光PV
相当于cube(dsp, tag) + measure(pv),HiveQL如下:
select dsp, tag, count(*) as pv
from ad_view
where view = 'view' and day_time between '2016-04-18' and '2016-04-24'
group by dsp, tag with cube;
现在问题来了:如何将原始表中的tags array<struct<tag:string,label:string,src:string>> 转换成有标签(taged)、无标签(empty)呢?显而易见的办法,为字段tags写一个UDF来判断是否有标签。
本文介绍了在Hive中为解决广告日志曝光PV计算问题,如何创建UDF来判断字段是否有标签。内容涵盖UDF的基本类型,如UDF、UDAF和UDTF,以及如何实现一个判断空标签的GenericUDF,并提供了编译和添加到Hive的步骤。
订阅专栏 解锁全文
2万+

被折叠的 条评论
为什么被折叠?



