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

Hive之窗口函数lag()/lead()

一、函数介绍

lag()与lead函数是跟偏移量相关的两个分析函数

通过这两个函数可以在一次查询中取出同一字段的前N行的数据(lag)和后N行的数据(lead)作为独立的列,从而更方便地进行进行数据过滤,该操作可代替表的自联接,且效率更高

lag()/lead()

lag(col,n,DEFAULT)用于统计窗口内往上第n行值
 第一个参数为列名
 第二个参数为往上第n行(可选,默认为1)
 第三个参数为默认值(当往上第n行为NULL时候,取默认值,如不指定,则为NULL)

lead()函数与lag()函数相反,用于统计窗口内往下第n行值

over()
表示lag()与lead()操作的数据都在over()的范围内,里面可以使用以下子句
 partition by 语句(用于分组)
 order by 语句()用于排序)
如:over(partition by a order by b) 表示以a字段进行分组,再以b字段进行排序,对数据进行查询

二、应用场景

1、查找前一行或前N行的数据

2、比较相邻行的数据

3、查询n天内值是否连续增长的

三、实践案例

有一张表kd_stock_history_info,里面有code(编码),date(日期),amount(销售额)三个字段,表数据如下:

img

通过hive如何获取到连续n天是增长状态的编码。例如查询2023-01-10这天的数据,也就是从2023-01-10这天往前数三天,看这三天的数据中amount是否连续增长,表中1001就不是,1002则符合。

SELECTcode,`date`,amount,LAG(amount) OVER (PARTITION by code ORDER BY `date`) AS prev_sales,amount - LAG(amount) OVER (PARTITION by code ORDER BY `date`) AS sales_diff
FROMkd_stock_history_info
where 
`date` BETWEEN DATE_SUB(TO_DATE('2023-01-10'), 2) AND TO_DATE('2023-01-10');

img

 为了更美观一些,调整lag()函数默认值

SELECTcode,`date`,amount,LAG(amount,1,amount) OVER (PARTITION by code ORDER BY `date`) AS prev_sales,amount - LAG(amount,1,amount) OVER (PARTITION by code ORDER BY `date`) AS sales_diff
FROMkd_stock_history_info
where 
`date` BETWEEN DATE_SUB(TO_DATE('2023-01-10'), 2) AND TO_DATE('2023-01-10');

img

最终代码:

SELECT code,min(sales_diff) min_sales_diff from (
SELECT
code,`date`,amount,LAG(amount,1,amount) OVER (PARTITION by code ORDER BY `date`) AS prev_sales,amount - LAG(amount,1,amount) OVER (PARTITION by code ORDER BY `date`) AS sales_diff
FROMkd_stock_history_info
where 
`date` BETWEEN DATE_SUB(TO_DATE('2023-01-10'), 2) AND TO_DATE('2023-01-10') 
) a 
group by code 
having min_sales_diff >= 0;

 更多资料:

Hive Lag函数用法介绍_笔记大全_设计学院 (python100.com)

Hive窗口函数04-LAG、LEAD、FIRST_VALUE、LAST_VALUE-腾讯云开发者社区-腾讯云 (tencent.com)

相关文章:

Hive之窗口函数lag()/lead()

一、函数介绍 lag()与lead函数是跟偏移量相关的两个分析函数 通过这两个函数可以在一次查询中取出同一字段的前N行的数据(lag)和后N行的数据(lead)作为独立的列,从而更方便地进行进行数据过滤,该操作可代替表的自联接,且效率更高 lag()/lead() lag(c…...

Vite+Typescript+Vue3学习笔记

ViteTypescriptVue3学习笔记 1、项目搭建 1.1、创建项目(yarn) D:\WebstromProject>yarn create vite yarn create v1.22.19 [1/4] Resolving packages... [2/4] Fetching packages... [3/4] Linking dependencies... [4/4] Building fresh packages...success Installed…...

二、SQL-6.DCL-2).权限控制

*是数据库和表的通配符,出现在数据库位置上表示所有数据库,出现在表名位置上,表示所有表 %是主机名的通配符,表示所有主机。 e.g.所有数据库(*)的所有表(*)的所有权限(a…...

[OpenStack] GPU透传

GPU透传本质就是PCI设备透传,不算是什么新技术。之前按照网上方法都没啥问题,但是这次测试NVIDIA A100遇到坑了。 首先是禁用nouveau 把intel_iommuon rdblacklistnouveau写入/etc/default/grub的cmdline,然后grub2-mkconfig -o /etc/grub2.c…...

无涯教程-jQuery - Progressbar组件函数

小部件进度条功能可与JqueryUI中的小部件一起使用。一个简单的进度条显示有关进度的信息。一个简单的进度条如下所示。 Progressbar - 语法 $( "#progressbar" ).progressbar({value: 37 }); Progressbar - 示例 以下是显示进度条用法的简单示例- <!doctype …...

[SQL挖掘机] - 窗口函数 - rank

介绍: rank() 是一种常用的窗口函数&#xff0c;它为结果集中的每一行分配一个排名&#xff08;rank&#xff09;。这个排名基于指定的排序顺序&#xff0c;并且在遇到相同的值时&#xff0c;会跳过相同的排名。 用法: rank() 函数的语法如下&#xff1a; rank() over ([pa…...

VBAC多层防火墙技术的研究-状态检测

黑客技术的提升和黑客工具的泛滥,造成大量的企业、机构和个人的电脑系统遭受程度不同的入侵和攻击,或面临随时被攻击的危险。迫使大家不得不加强对自身电脑网络系统的安全防护,根据系统管理者设定的安全规则把守企业网络,提供强大的、应用选通、信息过滤、流量控制、网络侦…...

PHP8的数据类型-PHP8知识详解

在PHP8中&#xff0c;变量不需要事先声明&#xff0c;赋值即声明。 不同的数据类型其实就是所储存数据的不同种类。在PHP8.0、8.1中都有所增加。以下是PHP8的15种数据类型&#xff1a; 1、字符串&#xff08;String&#xff09;&#xff1a;用于存储文本数据&#xff0c;可以使…...

明晚直播:可重构计算芯片的AI创新应用分享!

大模型技术的不断升级及应用落地&#xff0c;正在推动人工智能技术发展进入新的阶段&#xff0c;而智能化快速增长和发展的市场对芯片提出了更高的要求&#xff1a;高算力、高性能、灵活性、安全性。可重构计算区别于传统CPU、GPU&#xff0c;以指令驱动的串行执行方式&#xf…...

flask 点赞系统

dianzan.html页面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>点赞系统</title> </head> <body><h2>这是一个点赞系统</h2><table border"1"><…...

关于Java的多线程实现

多线程介绍 进程&#xff1a;进程指正在运行的程序。确切的来说&#xff0c;当一个程序进入内存运行&#xff0c;即变成一个进程&#xff0c;进程是处于运行过程中的程序&#xff0c;并且具有一定独立功能。 线程&#xff1a;线程是进程中的一个执行单元&#xff0c;负责当前进…...

如何判断某个视频是深度伪造的?

目录 一、前言 二、仔细检查面部动作 三、声音可以提供线索 四、观察视频中人物的身体姿势 五、小心无意义的词语 深造伪造危险吗&#xff1f; 一、前言 制作深度伪造视频就像在Word文档中编辑文本一样简单。换句话说&#xff0c;您可以拍下任何人的视频&#xff0c;让他…...

ESP32(MicroPython) 四足机器人(一)

最近决定研究一下四足机器人&#xff0c;但市面上的产品&#xff0c;要么性价比低&#xff0c;要么性能达不到要求。本人就另外买了零件&#xff0c;安装到之前的一个麦克纳姆轮底盘的底板上。&#xff08;轮子作为装饰&#xff0c;使用铜柱固定&#xff09; 舵机使用MG996R&a…...

力扣刷题记录---利用python实现链表的基本操作

文章目录 前言一、利用python实现链表的基本操作1.节点的定义使用类实现&#xff1a;1.链表的定义使用类实现&#xff1a;3.判断是否为空函数实现&#xff1a;4.链表长度函数实现&#xff1a;5.遍历链表函数实现&#xff1a;6.头插法函数实现&#xff1a;7.尾插法函数实现&…...

OpenAI重磅官宣ChatGPT安卓版本周发布,现已开启下载预约,附详细预约教程

7月22号&#xff0c;OpenAI 突然宣布&#xff0c;安卓版 ChatGPT 将在下周发布&#xff01;换句话说&#xff0c;本周安卓版 ChatGPT正式上线&#xff01; 最早&#xff0c;ChatGPT仅有网页版。 今年5月&#xff0c;iOS版ChatGPT正式发布&#xff0c;当时OpenAI表示Android版将…...

PHP 支付宝支付、订阅支付(周期扣款)整理汇总

最近项目中需要使用支付宝的周期扣款&#xff0c;整理一下各种封装方法 APP支付&#xff08;服务端&#xff09; /******************************************************* 调用方法******************************************************/function test_pay(){$isSubscri…...

python-pytorch基础之神经网络回归

这里写目录标题 定义数据集定义函数生成数据集 使用Dataloader加载dataset定义神经网络定义实例化查看是否是输出的一个 训练编写trian方法训练并保存模型 测试模型结果构造数据测试结论 定义数据集 import torch import random定义函数 # 生成数据 def get_rancledata():wid…...

linux中通过.desktop文件执行bash命令打开chrome浏览器并传参

.desktop 文件介绍 Ecex 参数介绍 Code 描述 %f %f指向临时文件。用于不了解URL语法的程序。 %F 文件列表。用于可以一次打开多个本地文件的应用程序。每个文件作为单独的参数传递给可执行程序。 %u 单一的URL或者本地文件 %U %u的复数 %i 如果Icon 为空,不应该填写此参数。…...

ChatGPT的应用与发展趋势:解析人工智能的新风口

目录 优势 应用领域 发展趋势 总结 在人工智能技术迅猛发展的时代&#xff0c;自然语言处理系统的提升一直是研究者们追求的目标。作为人工智能领域的重要突破之一&#xff0c;ChatGPT以其出色的语言模型和交互能力&#xff0c;在智能对话领域取得了重要的进展。 ChatGPT是…...

使用maven打jar包时,如何只把依赖的其它jar中的类打进jar包,没有依赖的其它jar包的类文件不打进来?

简介 使用Maven打包时&#xff0c;默认情况下&#xff0c;所有依赖的jar包都会被打包到生成的jar文件中。 如果只想将依赖的其他jar中的类文件打进来&#xff0c;而不包含其它jar包&#xff0c;可以使用Maven的 maven-shade-plugin插件进行配置。 步骤 以下是一个示例配置&…...

手把手教你用Python+OpenBMI复现运动想象BCI实验(附完整代码与数据集)

Python实战&#xff1a;从OpenBMI到运动想象脑机接口的全流程复现指南在认知科学与脑机接口(BCI)研究领域&#xff0c;运动想象(Motor Imagery)实验一直是经典范式。传统上&#xff0c;这类实验多依赖Matlab生态完成&#xff0c;但随着Python在科学计算领域的崛起&#xff0c;越…...

手把手教你学 Simulink-- 开关磁阻电机(SRM)的转矩分配函数(TSF)控制仿真

目录 手把手教你学 Simulink-- 开关磁阻电机(SRM)的转矩分配函数(TSF)控制仿真 🔥 前言:为什么选 SRM+TSF? 一、SRM 基础:12/8 极结构与数学模型 1.1 电压方程(第 k 相) 1.2 转矩方程(强非线性) 二、TSF 核心原理:一句话讲透 2.1 四种常用 TSF 公式(含参数…...

AI检测率太高论文过不了?这4个降AI率平台2026年别再错过了

随着AI技术在学术领域的广泛应用&#xff0c;论文中的AI痕迹越来越容易被检测系统识别。如何有效降低AIGC率、去除AI痕迹&#xff0c;已成为众多学者和学生关注的焦点。依托权威检测平台数据、高校实测结果及用户真实反馈&#xff0c;本文将深入解析当前最值得尝试的降AI率工具…...

proj-agones:知识点:helm

helm install之后的log be like&#xff1a;(base) savilahaobogon ~ % helm install prometheus prometheus-community/kube-prometheus-stack -n monitoring --create-namespace NAME: prometheus LAST DEPLOYED: Wed May 20 14:54:39 2026 NAMESPACE: monitoring STATUS: de…...

SSH安全加固:禁用弱加密算法的实操指南

1. 为什么禁用弱加密算法不是“可选项”&#xff0c;而是SSH上线前的必过门槛我第一次在客户现场接手一台刚部署的CentOS 7跳板机时&#xff0c;安全扫描报告里赫然标红了三条&#xff1a;ssh-rsa签名算法被标记为CRITICAL&#xff0c;diffie-hellman-group1-sha1密钥交换被判定…...

ThingsVis v1.1.15 版本更新:补齐嵌入与运维体验短板,多场景集成更可靠

ThingsVis v1.1.15&#xff1a;嵌入与运维体验的全面升级ThingsVis v1.1.15 版本以 ThingsVis 嵌入能力和设备详情页体验为核心进行更新。在 ThingsVis 嵌入方面&#xff0c;支持全屏、自动播放、剪贴板写入权限&#xff0c;修复 iframe 无法全屏问题&#xff1b;在设备详情页&…...

85%企业将淘汰纯业务程序员!2026年前,大模型才是你的职业救命稻草!

文章指出传统技术岗面临淘汰风险&#xff0c;85%企业计划在2026年前淘汰纯业务型程序员。未来职场核心竞争力在于掌握大模型技术。文章强调大模型技术是技术人的时代红利&#xff0c;提供从入门到精通的全套视频教程&#xff0c;涵盖提示词工程、RAG、Agent等技术点。文章还分析…...

AI写论文真给力!4款AI论文生成工具,开启高效论文写作模式!

AI论文写作工具评测 还在为撰写期刊论文、毕业论文或职称论文而感到烦恼吗&#xff1f;在人工写作的过程中&#xff0c;面对那海量的文献资料&#xff0c;犹如在茫茫大海中捞针&#xff0c;而那些繁琐的格式要求更是让我们无从下手&#xff0c;不断的修改反复消耗我们的耐心&a…...

Allegro出Gerber避坑指南:关于NC钻孔层(MANUFACTURING/NCLEGEND)丢失的那些事儿

Allegro出Gerber避坑指南&#xff1a;NC钻孔层丢失问题深度解析与实战解决方案 在PCB设计领域&#xff0c;Gerber文件输出是设计到生产的最后一道关键环节。许多经验丰富的设计师都曾遇到过这样的场景&#xff1a;按照标准流程操作&#xff0c;却在最终检查时发现NC钻孔图例层(…...

当Windows 11变得臃肿时:如何用开源工具Win11Debloat重获系统控制权

当Windows 11变得臃肿时&#xff1a;如何用开源工具Win11Debloat重获系统控制权 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to dec…...