记录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
相关推荐
viperrrrrrrrrr71 小时前
大数据学习(115)-hive与impala
大数据·hive·学习·impala
麻芝汤圆1 小时前
在 IDEA 中写 Spark 程序:从入门到实践
java·大数据·hadoop·分布式·安全·spark·intellij-idea
!chen14 小时前
Hadoop和Spark大数据挖掘与实战
hadoop·数据挖掘·spark
Bob999817 小时前
Amlogic S905L3系列盒子 ROM DIY相关
java·javascript·数据仓库·vscode·eclipse·tomcat·vim
weixin_3077791319 小时前
AWS Glue ETL设计与调度最佳实践
开发语言·数据仓库·云计算·etl·aws
IT成长日记20 小时前
【Hive入门】Hive分区与分区表完全指南:从原理到企业级实践
数据仓库·hive·hadoop·hive分区·hive分区表
晴天彩虹雨1 天前
Flink 消费 Kafka 数据流的最佳实践
数据仓库·flink·kafka·linq
柳如烟@1 天前
Hadoop伪分布式模式搭建全攻略:从环境配置到实战测试
大数据·hadoop·分布式·mysql
Leo.yuan1 天前
数据仓库建设全解析!
大数据·数据库·数据仓库·数据分析·spark
Aimyon_361 天前
Apache Sqoop数据采集问题
hadoop·apache·sqoop