记录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
相关推荐
RodrickOMG13 小时前
【大数据】Hadoop三节点集群搭建
大数据·hadoop·分布式
DashVector13 小时前
如何通过HTTP API插入或更新Doc
大数据·数据库·数据仓库·人工智能·http·数据库架构·向量检索
SelectDB技术团队15 小时前
Apache Doris 创始人:何为“现代化”的数据仓库?
大数据·数据库·数据仓库·数据分析·doris
好记性+烂笔头15 小时前
踏踏实实练SQLday1-1连续登录
数据仓库
派可数据BI可视化20 小时前
连锁餐饮行业数据可视化分析方案
大数据·数据库·数据仓库·数据分析·商业智能bi
喻师傅21 小时前
数据仓库工具箱—读书笔记02(Kimball维度建模技术概述04、使用一致性维度集成)
数据仓库·读书笔记·数据仓库工具箱
xserver21 天前
hadoop搭建
大数据·linux·hadoop
七夜zippoe1 天前
从数据仓库到数据中台再到数据飞轮:电信行业的数据技术进化史
数据仓库·数据中台·数据飞轮
筒栗子1 天前
复习打卡大数据篇——Hadoop HDFS 03
大数据·hadoop·hdfs
学计算机的睿智大学生2 天前
Hadoop的生态系统所包含的组件
大数据·hadoop·分布式