第二十章hive

1)

窗口函数


over(partition by 分组字段 order by 排序字段 rows between 起始行 and 结束行)


窗口计算范围的指定

需要使用rows 进行指定 计算行数

范围的确认:

默认情况下没有指定partition by 的字段,范围是全表,如果指定了partition by,范围是分组内的范围

可以通过rows指定计算行的范围大小 :rows between 起始行 and 结束行

指定计算行范围后,只对范围内的数据进行计算

select * ,count(字段) over (rows between unbounded preceding and current row )cnt from 表名

unbounded preceding: 窗口向上无限制 

current row:当前行

行数:preceding

向下指定函数: following

向下无限制:unbounded following

不同的关键字可以组合成一个范围

between 起始范围行  and 结束行 

例如:

between 2 preceding and 1 followling  包含4行数据 

范围查找是从当前行为基准  2 preceding 向上找两行  1 followling 向下一行共4行

范围顺序:起始行向上 结束行向下


order by  计算范围说明

使用了order by后自带计算范围统计数据  范围为:rows between unbounded preceding and current now

over 中的 order by 是计算数据时,先排序在计算数据, from 后的order by  是对计算后的结果排序 (可以同时出现)


2)

CTE

CTE语法类似子查询,可以将一个select语句计算的结果当成一个新的临时表使用

基本用法

with 临时表名 as(查询语句) select * from 临时表名

多个计算结果保存

with 表名1 as(查询语句),

        表名2 as (查询语句 select * from 表名1),

        表名3 as (查询语句)

select * from 表名3 join 表名2

例如 :

with  tb1 as(select * from emp)
select ename,sal from tb1

3) 爆炸函数和合并函数  (只能hive里面用)

函数的分类:

udf (user define function) 函数   数据输入多少行就返回多少行数据  计算是一进一出
 
                   hive中的大部分函数都是udf函数          

udaf函数  (user define aggregation  function)函数  输入多行数据返回一行结果  多进一出  例如 sum avg count...

udtf函数         输入一行返回多行  一进多出

3-1  explode方法

爆炸函数  可以将数组中的数据拆分多行

explode 不能直接和其他字段出现在select中

使用侧视图的方法和其他字段一起展示

侧视图 关键字 lateral view explode(explode(split(字段,'-'))) 表名(tb1) as

select 字段,字段 from 表名 lateral view explode(split(字段,'-'))tb1 as 别名

不能简单使用join进行关联数据


3-2  collect方法  合并操作

 collect_list(字段)from 表名 ;

collect_list 合并后不会去重

collect_set 合并后会对数据进行去重


4) 随机抽样

从海量数据中随机抽取部分样本数据进行计算得到的结果趋势和整体趋势一致

select ...from tb1 tablesample(bucket x OUT y ON (colname | read ( )))

x代表取哪组

y代表分成几组

(colname | read ( )) = 字段

或者  select ...from tb1 tablesample(bucket x OUT y ON  rabd())

rabd()=随机性  通过hash计算进行随机挑选

select (abs(hash(‘1aa12023-10-10’))+ round (rand()*100))%4

5)

虚拟列

hive 表中自带字段列,在进行select查询时没有指定,不会出现在查询结果中

可以在select中指定这些字段显示内容

INPUT_FILE_NAME  显示数据行所在的具体文件

BLOCK_OFFSET_INSIDE_FILE 显示数据行所在文件的偏移量

ROW_OFFSET_INSIDE_BLOCK 显示数据所在的hdfs块的偏移量

    此虚拟列需要设置:SET hive.exec.rowoffset=true; 才可使用.

虚拟列可以作为select的过滤条件使用
 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kafka 架构深入介绍 及搭建Filebeat+Kafka+ELK

目录 一 架构深入介绍 (一)Kafka 工作流程及文件存储机制 (二)数据可靠性保证 (三)数据一致性问题 (四)故障问题 (五)ack 应答机制 二 实…

蓝桥杯2024年第十五届省赛

E:宝石组合 根据给的公式化简后变为gcd(a,b,c)根据算数基本定理&#xff0c;推一下就可以了 然后我们对1到mx的树求约数&#xff0c;并记录约数的次数&#xff0c;我们选择一个最大的且次数大于等3的就是gcd int mx; vector<int> g[N]; vector<int> cnt[N]; int…

关于Cortex-M3单片机出现Fault故障,应该如何判断和解决

一、Fault故障的种类及检查思路 Cortex-M3单片机出现Fault故障可能是由于多种原因引起的&#xff0c;包括软件错误、硬件故障或者外部环境因素等。以下是一些常见的方法来判断和解决这些故障&#xff1a; 查看Fault类型&#xff1a;Cortex-M3处理器有多种Fault类型&#xff0c…

基于贝叶斯算法的机器学习在自动驾驶路径规划中的应用实例

目录 第一章 引言 第二章 数据准备 第三章 贝叶斯路径规划模型训练 第四章 路径规划预测 第五章 路径执行 第六章 实验结果分析 第一章 引言 自动驾驶技术的发展带来了自动驾驶车辆的出现&#xff0c;而路径规划作为自动驾驶车辆的关键功能之一&#xff0c;对于确定最佳行…

Android Dialog圆角设置无效的问题

一&#xff0c;参考 Android Dialog圆角设置无效的问题 https://blog.csdn.net/woshi_awei/article/details/99664527 Android自定义Dialog实现通用圆角对话框 https://cloud.tencent.com/developer/article/1740956 二&#xff0c;原因 Diallog的默认背景是白色&#xff0…

JVM之JVM栈的详细解析

Java 栈 Java 虚拟机栈&#xff1a;Java Virtual Machine Stacks&#xff0c;每个线程运行时所需要的内存 每个方法被执行时&#xff0c;都会在虚拟机栈中创建一个栈帧 stack frame&#xff08;一个方法一个栈帧&#xff09; Java 虚拟机规范允许 Java 栈的大小是动态的或者是…

【Go】 编码解码基础,encoding标准库:base64、binrary、json、xml、gob、hex、pem、csv

目录 base64 binary json xml CSV GOB HEX PEM 总结 在 Go 语言中&#xff0c;encoding 标准库提供了多种用于数据编码和解码的包&#xff0c;如 asn1、base64、binary、json、xml 等。下面我将分别介绍这些包的基本使用方法。 base64 encoding/base64 包用于处理 Ba…

标准版uni-app移动端页面添加/开发操作流程

页面简介 uni-app项目中&#xff0c;一个页面就是一个符合Vue SFC规范的.vue文件或.nvue文件。 .vue页面和.nvue页面&#xff0c;均全平台支持&#xff0c;差异在于当uni-app发行到App平台时&#xff0c;.vue文件会使用webview进行渲染&#xff0c;.nvue会使用原生进行渲染。…

centos开机自启的方式总结

centos管理服务的开机自启的方式有这些&#xff1a; 1. systemctl systemctl使用enable/disable来开机自启和禁用开机自启&#xff1a; systemctl enable sshd 开机自动的配置文件存储在/etc/systemd下。 2.chkconfig 这个命令是用于简化服务的管理&#xff0c;和systemct…

用海豚调度器定时调度从Kafka到HDFS的kettle任务脚本

在实际项目中&#xff0c;从Kafka到HDFS的数据是每天自动生成一个文件&#xff0c;按日期区分。而且Kafka在不断生产数据&#xff0c;因此看看kettle是不是需要时刻运行&#xff1f;能不能按照每日自动生成数据文件&#xff1f; 为了测试实际项目中的海豚定时调度从Kafka到HDF…

ActiveMQ主从架构和集群架构的介绍及搭建

一、主从和集群架构的特点 1.1 主从架构的-Master/slave模式特点 读写分离&#xff0c;纵向扩展&#xff0c;所有的写操作一般在master上完成&#xff0c;slave只提供一个热备 1.2 集群架构-Cluster模式特点 分布式的一种存储&#xff0c;水平的扩展&#xff0c;消息的分布…

CCleaner怎么清理软件缓存 CCleaner清理要勾选哪些 ccleanerfree下载

CCleaner软件是一款优秀的数据清理软件&#xff0c;其中没有硬盘和内存的设置&#xff0c;也不含任何广告软件&#xff0c;其出色的注册表清洁功能能够保证您的电脑更稳定运行。本文将围绕CCleaner怎么清理软件缓存&#xff0c;CCleaner清理要勾选哪些的相关内容进行介绍。 一、…

计算机网络——DNS协议

目录 前言 前篇 引言 IP地址与域名 DNS协议的工作流程 DNS服务器节点之间是如何维护上下级关系的 前言 本博客是博主用于复习计算机网络的博客&#xff0c;如果疏忽出现错误&#xff0c;还望各位指正。 这篇博客是在B站掌芝士zzs这个UP主的视频的总结&#xff0c;讲的非…

将本地项目上传到Github

首先安装git、创建github账号 1、创建一个新的仓库 2、创建SSH KEY。先看一下你C盘用户目录下有没有.ssh目录&#xff0c;有的话看下里面有没有id_rsa和id_rsa.pub这两个文件&#xff0c;有就跳到下一步&#xff0c;没有就通过下面命令创建。 ssh-keygen -t rsa -C "you…

面试算法-174-二叉树的层序遍历

题目 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7]] 解 class Solut…

代码随想录Day41:动态规划Part3

Leetcode 343. 整数拆分 讲解前&#xff1a; 毫无头绪 讲解后&#xff1a; 这道题的动态思路一开始很不容易想出来&#xff0c;虽然dp数组的定义如果知道是动态规划的话估摸着可以想出来那就是很straight forward dp定义&#xff1a;一维数组dp[i], i 代表整数的值&#xf…

ubuntu,curl(56):openssl ssl_read:error:0A000126:报错

解决方案&#xff1a; SSL/TLS版本过期&#xff1a;服务器可能使用的是curl不支持的过期的SSL/TLS版本。您可以尝试使用--tlsv1.2或--tlsv1.3选项来强制curl使用特定版本的SSL/TLS。例如&#xff1a;curl --tlsv1.2 https://example.com。 无效的SSL/TLS证书&#xff1a;服务器…

pyqt QToolBar 选中高亮

目录 效果图 示例代码 效果图 示例代码 from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, QToolBar, QToolButtonclass HighlightingToolButton(QToolButton):def __init__(self, parentNone):super().__init__(parent)self.setCheckable(True)def nextChe…

提升论文写作效率:ChatGPT的妙用

ChatGPT无限次数:点击直达 提升论文写作效率&#xff1a;ChatGPT的妙用 在当今信息爆炸的时代&#xff0c;高效撰写论文成为许多从事学术研究的人士面临的一项重要挑战。传统的论文写作过程繁琐耗时&#xff0c;然而&#xff0c;随着人工智能技术的不断发展&#xff0c;ChatGP…

ins视频批量下载,instagram批量爬取视频信息

简介 Instagram 是目前最热门的社交媒体平台之一,拥有大量优质的视频内容。但是要逐一下载这些视频往往非常耗时。在这篇文章中,我们将介绍如何使用 Python 编写一个脚本,来实现 Instagram 视频的批量下载和信息爬取。 我们使用selenium获取目标用户的 HTML 源代码,并将其保存…