当前位置: 首页 > news >正文

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

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

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

        比如下面的例子:

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

可以使用struct函数将时间字段和属性字段拼接起来,当属性字段是null时,赋值为0(这样可以使其排名靠后),然后取max,再取出来属性值,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

相关文章:

  • 关于Android studio新版本和NEW UI显示返回按钮的设置
  • Flutter的BuildContext简介
  • 【排序算法】之堆排序
  • L1-025:正整数A+B
  • 深入理解RBAC权限系统
  • K8s 入门指南(一):单节点集群环境搭建
  • Spring--10--Spring Bean的生命周期
  • mac安装elasticsearch8.x
  • Android 顶部对齐宽度撑满高度等比例缩放及限制最大最小高度
  • 从互联网到云计算再到 AI 原生,百度智能云数据库的演进
  • MySQL执行语句 Table ‘mysql.servers‘ doesn‘t exist
  • Python爬取酷我音乐
  • 贵州开放大学形成性考核 平时作业 参考试题
  • Error opening file for writing报错解决
  • RocketMQ-RocketMQ高性能核心原理节点(流程图)
  • C++基础 -42- STL库之list链表
  • python:六种算法(DBO、RFO、WOA、GWO、PSO、GA)求解23个测试函数(python代码)
  • 从零开始搭建企业管理系统(六):RBAC 权限管理设计
  • 阿里云docker加速
  • 代码随想录 96. 不同的二叉搜索树
  • 巴总理召开国家指挥当局紧急会议
  • 洗冤录|县令遇豪强:黄榦处理的一起地产纠纷案
  • 美众议院通过法案将“墨西哥湾”更名为“美国湾”
  • 人民日报整版调查:中小学春秋假,如何放得好推得开?
  • 缅甸国防军继续延长临时停火期限至5月31日
  • 原油价格战一触即发?沙特不想再忍,领衔多个产油国加速增产