Hive 行列转换

在这里插入图片描述

行列转换
列转行

使用 lateral view + explode(array|map)lateral view + inline(array_struct) 可以将列转换为行。

  • 单列转多行,降维(单列数组或键值对)

示例1:explode(array(…))

select ..., A
from T
lateral view explode(ARRAY_FIELD) as A;
select explode(`array`(88.2,98.3,67.1)) AS (price);

示例2:explode(map(…))

select ..., K, V
from T
lateral view explode(MAP_FIELD) as K, V;
select explode(`map`("java",56,"mysql",88,"javascript",66)) AS (subject, score);

示例3:inline(array_struct)

select ..., 
from T
lateral view inline(STRUCT_ARRAY_FIELD)V as F1,...,FN;
with tmp as (
select array(
	named_struct('name','henry','age',22,'is_member','true'),
	named_struct('name','pola','age',20,'is_member','true'),
	named_struct('name','ariel','age',19,'is_member','true')
   ) AS array_struct
)
select name,age,is_member
from tmp
lateral view inline(array_struct)V as name,age,is_member;

lateral view inline(array_struct)将结构体数组的每个元素都转化为一行,每一行都包含结构体字段的值.
前:
在这里插入图片描述

后:
在这里插入图片描述

  • 多列转多行
select ..., A
from T
lateral view explode(array|map(F1,...,FN))V as A;

示例:

SELECT name, class, Scores.subject, Scores.score
FROM Students
LATERAL VIEW EXPLODE(ARRAY(
	named_struct('subject','math','score',math_score),
	named_struct('subject','science','score',science_score)
	)
) V AS Scores;

前:
在这里插入图片描述
后:
在这里插入图片描述

行转列
  • 多行转多列
    条件聚合,通常用于将多行数据中满足条件的某个值聚合到单个行中。
select
		F1,...,
		sum(if(C1,0,V1)) as A1,
		sum(if(C2,0,V2)) as A2,
		sum(if(C3,0,V3)) as A3
	from TABLE_NAME
	group by F1,...
	
	drop table if exists lateral_view_stack_test1w;
	create table lateral_view_stack_test1w as
	select year,
		   sum(if(month(order_time)=1,order_amount,0)) as sum_jan,
		   sum(if(month(order_time)=2,order_amount,0)) as sum_feb,
		   sum(if(month(order_time)=3,order_amount,0)) as sum_mar,
		   sum(if(month(order_time)=4,order_amount,0)) as sum_apr,
		   sum(if(month(order_time)=5,order_amount,0)) as sum_may,
		   sum(if(month(order_time)=6,order_amount,0)) as sum_jun,
		   sum(if(month(order_time)=7,order_amount,0)) as sum_jul,
		   sum(if(month(order_time)=8,order_amount,0)) as sum_aug,
		   sum(if(month(order_time)=9,order_amount,0)) as sum_sep,
		   sum(if(month(order_time)=10,order_amount,0)) as sum_oct,
		   sum(if(month(order_time)=11,order_amount,0)) as sum_nov,
		   sum(if(month(order_time)=12,order_amount,0)) as sum_dec
	from hive_internal_par_regex_test1w
	where year>=2014
	group by year;

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

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

相关文章

Java-List接口常用方法和遍历方法

List的继承结构 其中,红色为接口,蓝色为实现类 List的四大方法 List的基本操作void add(int index,E e)boolean remove(Object o)E remove(int index)E set(int index,E e)E get(int index)其中注意删除方法有两种,执行的时候主要选择实参…

作者推荐 | 【深入浅出MySQL】「底层原理」探秘缓冲池的核心奥秘,揭示终极洞察

探秘缓冲池的核心奥秘,揭示终极洞察 缓存池BufferPool机制MySQL缓冲池缓冲池缓冲池的问题 缓冲池的原理数据预读程序的局部性原则(集中读写原理)时间局部性空间局部性 innodb的数据页查询InnoDB的数据页InnoDB缓冲池缓存数据页InnoDB缓存数据…

可解释性AI

方向一:可解释性AI的定义与重要性 1. 什么是可解释人工智能 可解释人工智能(Explainable Artificial Intelligence, XAI)是指智能体以一种可解释、可理解、人机互动的方式,与人工智能系统的使用者、受影响者、决策者、开发者等&…

牛客网---------[USACO 2016 Jan S]Angry Cows

题目描述 Bessie the cow has designed what she thinks will be the next big hit video game: "Angry Cows". The premise, which she believes is completely original, is that the player shoots cows with a slingshot into a one-dimensional scene consistin…

中仕教育:事业单位考试考什么?

事业单位考试分为两个阶段,分别是笔试和面试,考试科目包括公共科目和专业科目两部分。 公共科目内容是公共基础知识、职业能力测试或申论。一种形式为:公共基础知识职业能力测试或职业能力测试申论。另一种形式为:公共基础申论。…

图像字幕中一些广泛使用的技术

文章目录 R-CNNsRNNsLSTMs and GRUsResNet R-CNNs 在图像识别领域,卷积神经网络(CNN)不仅可以识别出图像中的物体,还能检测出这些物体的边界框。如果我们使用传统的CNN进行对象检测,一种方法是在图像上覆盖一层栅格&a…

理想架构的Doherty功率放大器理论与仿真

Doherty理论—理想架构的Doherty功率放大器理论与仿真 参考: 三路Doherty设计 01 射频基础知识–基础概念 ADS仿真工程文件链接:理想架构的Doherty功率放大器理论与仿真 目录 Doherty理论---理想架构的Doherty功率放大器理论与仿真0、Doherty架构的作用…

试卷扫描转化word的功能有吗?分享4款工具!

试卷扫描转化word的功能有吗?分享4款工具! 随着科技的飞速发展,将试卷扫描并转化为Word文档已经成为我们日常学习和工作的常规需求。但是,市面上的扫描工具众多,如何选择一个既方便又准确的工具呢?本文将为…

JDWP原理分析与漏洞利用

JDWP(Java DEbugger Wire Protocol):即Java调试线协议,是一个为Java调试而设计的通讯交互协议,它定义了调试器和被调试程序之间传递的信息的格式。说白了就是JVM或者类JVM的虚拟机都支持一种协议,通过该协议,Debugger 端可以和 target VM 通信,可以获取目标 VM的包括类…

力扣刷题 第十二 边权重均等查询

现有一棵由 n 个节点组成的无向树,节点按从 0 到 n - 1 编号。给你一个整数 n 和一个长度为 n - 1 的二维整数数组 edges ,其中 edges[i] [ui, vi, wi] 表示树中存在一条位于节点 ui 和节点 vi 之间、权重为 wi 的边。 另给你一个长度为 m 的二维整数数…

windows根据pid查看端口号

一.什么是PID 任务管理器中的PID指的是进程标识符(Process Identifier),它用于在操作系统中唯一标识一个进程二.查看JAVA程序的PID jps命令即可三.根据PID查看端口 netstat -ano|findstr pid

QT5.14.2开发的Mysql8.0系统安装部署过程

最近在Windows 11 64位系统下使用QT5.14.2开发了套系统、使用了MYSQL8.0数据库,项目使用mingw-64编译器进行编译,编译完成后使用windeployqt进行发布,并制作安装包,拷贝到工控机Windows10 64位系统上进行安装运行。本文记录下安装…

机器人3D视觉引导半导体塑封上下料

半导体塑封上下料是封装工艺中的重要环节,直接影响到产品的质量和性能。而3D视觉引导技术的引入,使得这一过程更加高效、精准。它不仅提升了生产效率,减少了人工操作的误差,还为半导体封装技术的智能化升级奠定了坚实的基础。 传统…

兄弟HL-2260黑白激光打印机加粉清零方法

兄弟HL-2260是打印机厂商Brother生产的一款黑白激光多功能一体机,兄弟HL-2260打印机是一款高性价比的打印机,广泛应用于办公和家庭的打印设备,它的打印速度快,而且打印效果好。但是,使用久了之后难免会遇到一些问题&am…

Python学习07—字符串类型及操作

一、字符串类型的表示 字符串是由0个或多个字符组成的有序序列。字符串可由一对单引号或一对双引号表示。由于字符串是有序序列,因此,可以对其中的字符进行索引,且在索引时,字符是从0开始编号。 字符串有两类和四种表示方式&…

Linux——进程间通信(共享内存)

目录 system V共享内存 ​编辑 共享内存函数 共享内存的建立过程 shmget函数 shmctl函数 shmat函数 shmdt函数 实例代码 共享内存的特点 system V共享内存 共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间(即内存通过某种映射关…

Modern C++ std::bind的实现原理-举例

上节《Modern C std::bind的实现原理-CSDN博客》主要讲的是原理&#xff0c;本节举个例子并画图帮助理解。 上程序&#xff1a; #include <functional> #include <iostream>// A function taking three arguments void printValues(int a, double b, const std::…

探秘Dmail:Web3世界的通讯引领者

摘要&#xff1a;在一个充满潜力并且对创新要求严格的领域中&#xff0c;Dmail作为一种开创性的Web3通讯协议应运而生。 1月24日&#xff0c;OKX Jumpstart宣布上线Dmail&#xff0c;在Web3领域引起了巨大反响&#xff0c;这是一个旨在重新定义数字通讯范式的富有远见的项目&a…

【快影】怎么去除视频上不想要的东西?

您好&#xff0c;您可以试试编辑器中的「一键修复」功能&#xff0c;选中主轨或者画中画&#xff0c;点击底部一键修复功能&#xff0c;框选视频中不想要的内容&#xff0c;点击生成&#xff0c;即可预览修复效果&#xff1b;目前该功能是VIP专属功能&#xff0c;开通快影VIP即…

web前端项目-动画特效【附源码】

文章目录 一&#xff1a;赛车游戏动画HTML源码&#xff1a;JS源码&#xff1a;CSS源码&#xff1a;&#xff08;1&#xff09;normalize.css&#xff08;2&#xff09;style.css 二&#xff1a;吉普车动画演示HTML源码&#xff1a;CSS源码&#xff1a;&#xff08;1&#xff09…