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;

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

行转列
  • 多行转多列
    条件聚合,通常用于将多行数据中满足条件的某个值聚合到单个行中。
selectF1,...,sum(if(C1,0,V1)) as A1,sum(if(C2,0,V2)) as A2,sum(if(C3,0,V3)) as A3from TABLE_NAMEgroup by F1,...drop table if exists lateral_view_stack_test1w;create table lateral_view_stack_test1w asselect 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_decfrom hive_internal_par_regex_test1wwhere year>=2014group by year;

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

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

相关文章

博云科技与中科可控全面合作,探索前沿金融科技新机遇

2024年1月26日,博云科技与中科可控在昆山高新区成功举办合作签约仪式。昆山市委常委、昆山高新区党工委书记孙道寻、中科可控董事长聂华、博云科技董事长花磊等领导出席了本次签约仪式。 中科可控将利用其在先进计算和智造领域的优势,为博云科技提供有关…

Redis系列-数据结构篇

数据结构 string&#xff08;字符串&#xff09; redis的字符串是动态字符串&#xff0c;类似于ArrayList&#xff0c;采用预分配冗余空间的方式减少内存的频繁分配。 struct SDS<T>{ T capacity; T len; byte flags; byte[] content; } 当字符串比较短时&#xff0c…

多线程代码案例之单例模式

作者简介&#xff1a; zoro-1&#xff0c;目前大二&#xff0c;正在学习Java&#xff0c;数据结构&#xff0c;javaee等 作者主页&#xff1a; zoro-1的主页 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f496; 多线程代码案例之单例模式 单例…

linux_ftp客户端如何带有密码下载文件

目录 简介linux 使用密码登录ftplinux 客户端指定密码下来文件下载成功截图 简介 当我们使用linux 的ftp 客户端想从服务端下载一个文件的时候 又不会指定密码 应该如何处理呢 linux 使用密码登录ftp # 语法 lftp -u {ftp账号},{ftp密码} ftp://{服务器IP}:{端口}# 实例使用…

蓝桥杯 第 1 场 小白入门赛

目录 1.蘑菇炸弹 2.构造数字 3.小蓝的金牌梦 4.合并石子加强版 5.简单的LIS问题 6.期望次数 1.蘑菇炸弹 我们直接依照题目 在中间位置的数进行模拟即可 void solve(){cin>>n;vector<int> a(n1);for(int i1;i<n;i) cin>>a[i];int ans0;for(int i2;i…

02-opencv简单实例效果和基本介绍-上

机器视觉概述 机器视觉是人工智能正在快速发展的一个分支。简单说来,机器视觉就是用机器代替人眼来做测量和判断。机器视觉系统是通过机器视觉产品(即图像摄取装置,分CMOS和CCD两种)将被摄取目标转换成图像信号,传送给专用的图像处理系统,得到被摄目标的形态信息,根据像素…

Consul容器服务自动发现和更新

目录 前瞻 什么是服务注册与发现 什么是consul Docker-consul实现过程 Docker-consul集群部署 实验准备 实验流程 前瞻 什么是服务注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的&#xff0c;不保障高可用性&#xff0c;也不考虑服…

MyBatis常见面试题汇总

说一下MyBatis执行流程&#xff1f; MyBatis是一款优秀的基于Java的持久层框架&#xff0c;它内部封装了JDBC&#xff0c;使开发者只需要关注SQL语句本身&#xff0c;而不需要花费精力去处理加载驱动、创建连接等的过程&#xff0c;MyBatis的执行流程如下&#xff1a; 加载配…

华为radius认证

组网需求 如图1所示&#xff0c;用户同处于huawei域&#xff0c;Router作为目的网络接入服务器。用户需要通过服务器的远端认证才能通过Router访问目的网络。在Router上的远端认证方式如下&#xff1a; Router对接入用户先用RADIUS服务器进行认证&#xff0c;如果认证没有响应…

第七篇:node中间件详解

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! ​ 目录 &#x1f4d8; 引言&#xff1a; &#…

解读4篇混合类型文件Polyglot相关的论文

0. 引入 Polyglot文件指的是混合类型文件&#xff0c;关于混合类型文件的基础&#xff0c;请参考文末给出的第一个链接&#xff08;参考1&#xff09;。 1. Toward the Detection of Polyglot Files 1.1 主题 这篇2022年的论文&#xff0c;提出了Polyglot文件的检测方法。虽…

MySQL 联合索引

文章目录 1.简介2.最左匹配3.最左匹配原理4.如何建立联合索引?5.覆盖索引参考文献 1.简介 联合索引指建立在多个列上的索引。 MySQL 可以创建联合索引&#xff08;即多列上的索引&#xff09;。一个索引最多可以包含 16 列。 联合索引可以测试包含索引中所有列的查询&#…

十一、常用API——练习

常用API——练习 练习1 键盘录入&#xff1a;练习2 算法水题&#xff1a;练习3 算法水题&#xff1a;练习4 算法水题&#xff1a;练习5 算法水题&#xff1a; 练习1 键盘录入&#xff1a; 键盘录入一些1~100之间的整数&#xff0c;并添加到集合中。 直到集合中所有数据和超过2…

windows下postgresql的安装使用

一、安装 1、安装包安装 1.1 下载exe安装包 选择安装包&#xff1a;官网 或者点击下载&#xff1a;postgresql-12.12-1-windows-x64.exe Tip&#xff1a;此时若报错&#xff1a;There has been an error.An error occured executing the Microsoft VC runtime installer。 参…

【Tomcat与网络5】再论Tomcat的工作过程与两种经典的设计模式

前面两篇&#xff0c;我们重点分析了Tomcat的容器和连接器的基本设计&#xff0c;今天我们来看一下两个机构如何在service的调度下进行协同工作的。 目录 1.模板模式与Tomcat的重用性设计 2.观察者模式与Tomcat可扩展性设计 1.模板模式与Tomcat的重用性设计 首先&#xff0…

SELINUX导致的网络服务问题解决

第一&#xff1a;开启相关服务&#xff0c;监控SELINUX 相关服务&#xff1a;setroubleshoot,auditd,大多数都是以se开头的 如果没有此服务&#xff0c;先yum下&#xff0c;然后查看状态 这里关于auditd说明&#xff0c;centos7不可以用systemctl重启auditd服务&#xff0c;…

大象机器人六轴协作机械臂myCobot 320 进行手势识别

引言 我是一名专注于机器学习和机器人技术自由者。我的热情始于大学期间的人工智能课程&#xff0c;这促使我探索人机交互的新方法。尤其对于机械臂的操作&#xff0c;我一直想要简化其复杂性&#xff0c;使之更加直观和易于使用。 这个项目的灵感源自于我对创新技术的热爱以及…

如何保证MySQL数据一致性

在当今大数据时代&#xff0c;数据库系统扮演着至关重要的角色&#xff0c;而MySQL作为一种流行的关系型数据库管理系统&#xff0c;在数据一致性方面拥有着丰富的机制和技术。下面简单的探讨MySQL是如何保证数据一致性的。 事务与ACID特性 要了解MySQL如何保证数据一致性&am…

【JAVA】Long类型返回到前端,精度丢失

一. 问题阐述 20位long类型的数字&#xff0c;从后端接口返回到前端后【四舍五入】 MYSQL端 &#xff08;1&#xff09;bigint (20) &#xff08;2&#xff09;具体某一条数据 JAVA端 &#xff08;1&#xff09;实体类 &#xff08;2&#xff09;服务类 &#xff08;3&…

32GPIO输入LED闪烁蜂鸣器

目录 一.GPIO简介 二.具体电路结构 三.具体的GPIO模式 四.GPIO的寄存器 五.&#xff53;&#xff54;&#xff4d;&#xff13;&#xff12;外部的设备和电路 六.代码实现 一.点亮LED 二.LED闪烁 三.LED流水灯 四.蜂鸣器 一.GPIO简介 所有的GPIO都挂载到APB2上&#x…