记录hive/spark取最新且不为null的方法

听标题可能听不懂我想表达的意思,我来描述一下我要做的事:

比如采集同学对某一网站进行数据采集,同一个用户每天会有很多条记录,所以我们要取一条这个用户最新的状态,比如用户改了N次昵称,我们只想得到最后一次修改的结果,但是用窗口函数row_number按时间排序的话,可能最后一条某些字段没采集到,但是之前是有采集到的,所以应该在按时间倒序排的基础上,遇到null值,再往前取,直到所有字段尽可能取到最新的、不为null的值,最后存到表里。

比如下面的例子:

我们应该得到1,b,10,2023-12-01 00:04:00

可以使用struct函数将时间字段和属性字段拼接起来,当属性字段是null时,赋值为0(这样可以使其排名靠后),然后取max,再取出来属性值,sql如下:

sql 复制代码
SELECT id,
       aa.name,
       bb.age
FROM
  (SELECT id,
          max(struct(if(name IS NULL,0,addtime),name)) aa,
          max(struct(if(age IS NULL,0,addtime),age)) bb
   FROM your_table
   GROUP BY id)t1
相关推荐
慧一居士9 小时前
Apache StreamPark 功能和使用场景介绍、使用步骤详细示例
数据仓库
牛奶咖啡139 小时前
大数据Hadoop运维应用实践——Hadoop平台常见问题与故障汇总、系统调优、网络规划与硬件存储选型
大数据·hadoop·hadoop集群操作系统调优·hadoop集群运维问题汇总·hadoop集群硬件规划·大数据平台网络规划·大数据平台硬件存储选型
雨晨源码(同名B站)10 小时前
基于Python的网易云音乐评论数据情感化分析系统 音乐爬虫信息可视化 |SnowNLP评论情感分析
开发语言·hadoop·爬虫·python·信息可视化·毕业设计
赤土 炙焱1 天前
hiveserver2启动失败,磁盘满了
hive·hadoop
慧一居士1 天前
Hologres 功能及使用场景介绍,实践详细步骤示例
数据仓库
哥本哈士奇1 天前
dbt+SQLServer构建数据仓库(10):macro 以及 data vault的应用实例
大数据·数据仓库·sqlserver
Francek Chen2 天前
【大数据处理与分析】数据仓库Hive:02 数据湖
大数据·数据仓库·hive·hadoop·分布式·数据分析
自由能燃气设备3 天前
燃气容积式热水器厂家选购指南:2026年商用热水设备采购避坑手册
大数据·数据库·数据仓库·人工智能
哥本哈士奇3 天前
dbt+SQLServer构建数据仓库(8):Vibe Coding用dbt构建data vault数仓
数据仓库·sqlserver
Blossom i3 天前
Python+spark2.0+Hadoop机器学习与大数据实战第十一章:Python Spark的集成开发环境
大数据·hadoop·spark