mysql行转列函数_一个小知识点-Hive行转列实现Pivot

前言

传统关系型数据库中,无论是Oracle(11g之后)还是SQLserver(2005之后),都自带了Pivot函数实现行转列功能,本文主要讲述在Hive中实现行转列的两种方式。

传统数据库方式

这种方式是借鉴在Oracle或者SQLserver在支持Pivot函数之前实现行转列的方式,实际上语法没有什么变化,只是换成了Hive。

with testtable(select 1 id,'k1' key,123 value union allselect 1,'k2' key,124 value union allselect 2,'k1',234 value )select id, max(case when key='k1' then value else null end) k1, max(case when key='k2' then value else null end) k2 from testtable group by id

Map方式

这种方式的思路是把需要转列的字段及其值字段拼接成一个Hive上的key-value的map数据,具体Sql如下:

with testtable(select 1 id,'k1' key,123 value union allselect 1,'k2' key,124 value union allselect 2,'k1',234 value )select id,kv['k1'],kv['k2'] from (select id,str_to_map(concat_ws(',', collect_set(concat(key, '-', value))),',','-') kv from testtable group by id)t

总结

两种方式都可以实现行转列的功能,传统的方式易于理解,但在key的取值比较多的时候,写起来会相当繁琐,map的方式相对要简便一些。但map的方式所有的数据都collect到一起了,对内存的要求会高一些,而传统的方式通过聚合函数直接reduce,可以边运行边求值。

aa3afad7f6971446b1b3ad4c939ceb07.png

点赞和转发是最大的支持~

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

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

相关文章

java类的理解_Java类该怎么理解?

感觉你对java的各种数据类型可能理解不够吧。整体了解一下各个数据类型,你的问题就清楚了:java的基础数据类型有: byte、short、int、long、float、double、char。数组和类其实都可以“看做”是复杂数据类型,它们由基础数据类型以…

安全之心:一文读懂可信计算

简介: 信 or 不信,这是个问题 可信计算 TC (Trusted Computing) 业界新宠,越来越被高频提到 本质是创造可信执行环境的芯片级安全防护方案 然而,江湖流传 TA 的传说 却鲜少有人见过真身 阿里云作为亚太区最…

国内顶级AI赛事再启程,第三届“中国人工智能大赛”聚焦算法治理、深度伪造与网络安全

本届大赛赛题分为算法治理、深度伪造和网络安全三大方向的七大赛题,分别是:过滤算法鲁棒性、深度伪造视频检测、深度伪造视频生成方法识别、基于人工智能的音视频合成比赛、说话人无关的音频深度伪造检测识别、说话人相关的音频深度伪造检测识别、Webshe…

看阿里云如何用云上技术创新,帮助哈啰单车实现智能数据收治

简介: 客户通过把日志数据迁移到SLS,替代原有的kafka、ES、ClickHouse,累积节省成本达到30%,同时满足了稳定性、扩展性需求,以及对日志查询分析的需求。 更多存储标杆案例 欢迎点击下方链接查看 阿里云存储标杆案例样…

java radio 不可选_在Java Swing中取消选择RadioButtons

当显示一组JRadioButton时,最初没有选择任何一个(除非您以编程方式强制执行)。我想要能够将按钮恢复到该状态,即使在用户已经选择了一个之后,即,不应该选择任何按钮。然而,使用通常的嫌疑不会提供所需的效果&#xff1…

python画烟花的代码_电脑怎么用代码画烟花?

内个,我是化学专业的……回忆了一下,框架是这个:#include "stdlib.h"#include "graphics.h"#include "stdio.h"#include "math.h"#include "conio.h "#define PI 3.1425926main(){int gdriverDETECT,…

快进键启动,一文带你了解云原生时代容器安全

简介: 分享阿里云容器安全的治理能力与经验,致力保护生产环境安全。 都说国内需求离容器化还远,更谈不上关注安全,喊的热闹而落地困难。但总得有些声音面向未来向前看。 在2020年Forrester IaaS安全评测中,阿里云容器…

Serverless:这真的是未来吗?(一)

简介: 希望这些博客文章能帮助您在所有相关人员中展开讨论,就最佳业务方案达成一致。该课程可能涉及无服务器,也可能不涉及。在这第一篇文章中,我们将考虑在讨论无服务器时最常见的几个问题。在第二篇文章中,我们将研究…

无限级分类限定层级_王者荣耀:s20战令该不该买?战令限定星元皮肤实测真香...

王者荣耀:s20战令该不该买?战令限定星元皮肤实测真香Hello大家好,我是游戏鲪,很高兴见到大家。如今这个赛季的战令系统早已结束,新赛季也即将到来。许多小伙伴都在憧憬下个赛季的战令。关于s20赛季的战令奖励&#xff…

java testng 源代码_根据测试用例的java源码自动生成TestNG的XML文件

1、读取当前项目目录下的所有.java文件,过滤出含有Test标识的java源文件2、读取java文件内容,解析出包名、类名、方法名。使用Vector存储,第一个元素为包名,第二个元素为类名,从第三个元素开始存储有Test标识的方法名3…

光进铜退下的“更高”与“更低”,锐捷发布企业极简以太全光网解决方案

全新一代企业网络建设中,以太全光网将满足高带宽、简运维、降成本的要求。 头图 | 付费下载于视觉中国 出品 | CSDN云计算 近日,锐捷网络正式对外发布企业极简以太全光网解决方案。方案针对仓储物流、电子信息、工业制造、地产酒店等在行业客户在园区网…

物联网海量时序数据存储有哪些挑战?

简介: 随着 IoT 技术的快速发展,物联网设备产生的数据呈爆炸式增长,数据的总量(Volume)、数据类型越来越多(Variety)、访问速度要求越来越快(Velocity)、对数据价值&…

什么是 RedCap?一文详解!

作者 | 小枣君来源 | 鲜枣课堂随着3GPP R17版本的不断推进,一个新的名词逐渐开始热门起来,那就是RedCap。究竟什么是RedCap?为什么要引入它?它和现在的5G有什么区别?且看本文的深入解析……█ 什么是RedCapRedCap&…

被解救的代码 - 代码即服务时代来了!

简介: 人类对自由的追求从未停止,我们用战斗获得民族自由,我们用代码获得双手自由,同时代码作为服务器的奴隶,也开始蠢蠢欲动,革命已经开始,当代码翻身做主,作为开发者的我们又该如何…

java timer schedule_java怎么再次设置Timer的schedule???

public class TestTimer {class MyTimerTask extends TimerTask {private int time; //定时执行时间public MyTimerTask(){}public MyTimerTask(int _time){this.time _time;}Overridepublic void run() {System.out.println("time:" time);System.out.println((ti…

配置审计(Config)配合开启OSS防盗链功能

简介: 本文作者:紫极zj 本文将主要介绍利用【配置审计】功能,如何快速发现企业上云过程中,针对未配置防盗链的 OSS Bucket 定位及修复案例。 前言 配置审计(Config)将您分散在各地域的资源整合为全局资源…

python乘法函数_Python中列表与元组的乘法操作示例

本文实例讲述了Python中列表与元组的乘法操作。分享给大家供大家参考,具体如下:直接上code吧,还可以这么玩儿列表乘法:li[1,]lili*3print(li)out:[1, 1, 1]元组乘法:>>> t(1,2)>>> t*3(1, 2, 1, 2, …

清华大学:2021元宇宙研究报告

关于元宇宙的详细介绍;来源:软件定义世界(SDX)往期推荐阿里云投入 20 亿发力操作系统谷歌自研Tensor芯片,8核CPU,20核GPURedis很厉害,使用规范来啦Facebook 改名Meta,是押注元宇宙还…

如何做规划?分享2种思维和4个方法

简介: 规划不只是高层的事。学会做规划,不仅可以让目标更聚焦,还能让我们清晰地知道今后要做什么、如何去做。在本篇文章中,提到了规划的2种思维模式,和作者自己在规划中用到的4个规划方法,希望让开始做规划…

vue如何在末尾添加_怎样在Linux上开发vue项目

一、开发环境搭建:安装node.js环境以及vue cli工具(1)安装node.js从官网下载对应的二进制压缩包,如下图:01.png解压到程序安装目录xz -d node-v12.17.0-linux-x64.tar.xztar -xvf node-v12.17.0-linux-x64.tarsudo mv node-v12.17.0-linux-x6…