记录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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/239167.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++STL之List的实现

首先我们要实现List的STL,我们首先要学会双向带头链表的数据结构。那么第一步肯定是要构建我们的节点的数据结构。 首先要有数据域,前后指针域即可。 再通过模板类进行模板化。 然后再写List的构造函数,这个地方用T&,通过引用就可以减少一次形参拷…

坑爹的奥数(枚举法)

枚举法是一种解决问题的基本方法,它通过列举问题的所有可能情况来找到问题的解。这种方法适用于问题的解空间相对较小,可以通过穷举所有可能的解来找到最优解或满足特定条件的解。 以下是枚举法的一般步骤: 定义问题: 确定问题的…

学习-面试java基础-(集合)

String 为什么不可变? 1线程安全 2支持hash映射和缓存。因为String的hash值经常会使用到,比如作为 Map 的键,不可变的特性使得 hash 值也不会变,不需要重新计算。 3出于安全考虑。网络地址URL、文件路径path、密码通常情况下都是以…

易点易动设备管理系统:助力企业高效巡检的智能选择

在现代企业管理中,设备巡检是确保设备正常运行和生产高效的重要环节。然而,传统的巡检方式常常面临着效率低下、信息不准确等问题。为了解决这些挑战,易点易动设备管理系统应运而生。本文将详细介绍易点易动设备管理系统如何助力企业实现高效…

红队攻防实战之DEATHNOTE

难道向上攀爬的那条路,不是比站在顶峰更让人热血澎湃吗 渗透过程 获取ip 使用Kali中的arp-scan工具扫描探测 端口扫描 可以看到开放了22和80端口。 访问80端口,重定向到 修改hosts文件,将该域名解析到ip 如图 修改完再次访问&#xff0…

Python 递归、闭包与装饰器的编程魔法

更多资料获取 📚 个人网站:ipengtao.com 在Python编程中,递归、闭包和装饰器是一些强大的工具,它们能够为代码增色不少,提高代码的可读性和灵活性。本文将深入探讨这三种编程魔法的原理和应用,通过丰富的示…

040.Python面向对象_设计原则

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉&…

【工具栏】idea安装翻译工具

然后重启idea 打开设置 翻译方式: 选中要翻译的文本 然后右键 运行项目的时候,方便查找错误

快速幂+高精乘(填坑)洛谷1226+1045

引言 最近在刷题的时候偶然见到这样一个题目,见下图 大致的意思是,让我们计算a的b次方取模p的结果,再我了解了关于快速幂的内容之后,很快便解决了这道题,每次乘完a后取模最后就可以得到结果。但是在这之后&#xff0c…

淡化了技术指标 还能做现货黄金交易?

技术指标是分析和预测现货黄金走势的其中一种方法,普通投资者多数依赖技术指标为自己的交易做判断。然而,近几年有一种观点认为,我们应该淡化技术指标,少使用或者不用技术分析来服务我们的交易。这个观点引起了不少投资者的思考&a…

NFTScan | 12.04~12.10 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期:2023.12.04~ 2023.12.10 NFT Hot News 01/ NFTScan 与 MintCore 联合推出适用于 NFT 的 Layer2 网络 Mint 12 月 5 日,根据官方消息,NFT 基础设施服务商 NFTScan …

Ajax跨域请求

最近使用js构造请求时发生了CORS跨域问题,mark一下 ajax跨域,这应该是最全的解决方案了 | Dailc的个人主页Everything about dailchttps://dailc.github.io/2017/03/22/ajaxCrossDomainSolution.htmlAJAX - 廖雪峰的官方网站研究互联网产品和技术&#…

基于SSM的乡镇篮球队管理系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本乡镇篮球队管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信…

华为云CodeArts Artifact:保障制品质量与安全的最佳选择

近期,为降低用户使用成本、满足个性化选择诉求,华为云制品仓库CodeArts Artifact 从软件开发生产线 CodeArtS 解耦出来,可单独购买。这是一款打破了传统制品管理的限制,高效、安全、好用的软件包管理工具。 体验通道:…

独热编码和词向量的简单理解

把单词用向量表示,是把深度神经网络语言模型引入自然语言处理领域的一个核心技术。想要让机器理解单词,就必须要把它变成一串数字(向量)。下面介绍的 One-Hot Encoding(One-Hot 编码)和 Word Embedding &am…

接口自动化框架Pytest —— 配置文件pytest.ini的详细使用

前言 我们在执行用例的时候,每次都在命令行中输入-v,-s等一些命令行参数的时,比较麻烦。其中pytest.ini这个配置文件可以快速的帮助我们解决这个问题。 配置文件 pytest.ini文件是pytest的主配置文件,可以改变pytest的运行方式…

Async 异步任务注解类的用法及原理分析

背景 看项目源码发现有一个 Async 注解,它是 Spring 的一个注解,作用是在独立的线程中完成注解方法的操作,底层原理是动态代理。 之前不知道这个知识点,小小测试了一下,发现项目中这个注解的用法是错误的&#xff0c…

Cypress安装与使用教程(2)—— 软测大玩家

😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。 📡主页地址:【Austin_zhai】 🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能,分享行业相关最新信息。…

JVM学习笔记-如何在IDEA打印JVM的GC日志信息

若要在Idea上打印JVM相应GC日志,其实只需在Run/Debug Configurations上进行设置即可。 拿《深入Java虚拟机》书中的3-7代码例子来演示,如 1 public class JvmTest {2 private static final int _1MB1024*1024;3 public static void main(String…

AI 技术在前端开发流程中如何应用??3分钟带你一览开放原子开发者大会 OpenTiny 最新资讯!

大会简介 作为开放原子开源基金会的年度盛典,2023 开放原子开发者大会秉持遵循“共建、共治、共享”原则,以“一切为了开发者”为主题。本次大会汇聚顶尖开源人才,共享交流平台,通过吸引和邀请顶尖专家分享见解,设置技…