Hive数据仓库行转列

查了很多资料发现网上很多文章都是转发和抄袭,有些问题。这里分享一个自己项目中使用的行转列例子,供大家参考。代码如下:

SELECTmy_id,nm_cd_map['A'] AS my_cd_a,nm_cd_map['B'] AS my_cd_b,nm_cd_map['C'] AS my_cd_c,nm_num_map['A'] AS my_num_a,nm_num_map['B'] AS my_num_b,nm_num_map['C'] AS my_num_c
FROM(SELECTt.my_id,STR_TO_MAP(my_nm_cds,';',':') AS nm_cd_map,STR_TO_MAP(my_nm_nums,';',':') AS nm_num_mapFROM(SELECTmy_id,CONCAT_WS(';',COLLECT_LIST(CONCAT(my_nm,':',my_cd))) AS my_nm_cds,CONCAT_WS(';',COLLECT_LIST(CONCAT(my_nm,':',my_num))) AS my_nm_numsFROM(SELECT '1' AS my_id,'A' AS my_nm,'D01' AS my_cd,19 AS my_numUNION ALLSELECT '1' AS my_id,'B' AS my_nm,'D04' AS my_cd,18 AS my_numUNION ALLSELECT '1' AS my_id,'C' AS my_nm,'D02' AS my_cd,17 AS my_numUNION ALLSELECT '2' AS my_id,'A' AS my_nm,'D03' AS my_cd,16 AS my_numUNION ALLSELECT '2' AS my_id,'B' AS my_nm,'D05' AS my_cd,15 AS my_numUNION ALLSELECT '2' AS my_id,'C' AS my_nm,'D06' AS my_cd,14 AS my_num)GROUP BY my_id) t) t
WHERE 1=1;

如果是在SparkSQL或Presto平台,或者阿里云的MaxCompute平台,还可使用如下方式:

-- 其实也可使用CONCAT然后STR_TO_MAP的方式,或者用MAP_FROM_ARRAYS,再或者用数组排序后ARRAY[n] AS的方式
SELECTmy_id,nm_cd_map['A'] AS my_cd_a,nm_cd_map['B'] AS my_cd_b,nm_cd_map['C'] AS my_cd_c,nm_num_map['A'] AS my_num_a,nm_num_map['B'] AS my_num_b,nm_num_map['C'] AS my_num_c
FROM(SELECTt.my_id,MAP_FROM_ENTRIES(COLLECT_LIST(nm_cd)) AS nm_cd_map,MAP_FROM_ENTRIES(COLLECT_LIST(nm_num)) AS nm_num_mapFROM(SELECTmy_id,my_nm,my_cd,my_num,STRUCT(my_nm,my_cd) AS nm_cd,STRUCT(my_nm,my_num) AS nm_numFROM(SELECT '1' AS my_id,'A' AS my_nm,'D01' AS my_cd,19 AS my_numUNION ALLSELECT '1' AS my_id,'B' AS my_nm,'D04' AS my_cd,18 AS my_numUNION ALLSELECT '1' AS my_id,'C' AS my_nm,'D02' AS my_cd,17 AS my_numUNION ALLSELECT '2' AS my_id,'A' AS my_nm,'D03' AS my_cd,16 AS my_numUNION ALLSELECT '2' AS my_id,'B' AS my_nm,'D05' AS my_cd,15 AS my_numUNION ALLSELECT '2' AS my_id,'C' AS my_nm,'D06' AS my_cd,14 AS my_num)) tGROUP BY my_id) t
WHERE 1=1;

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

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

相关文章

MySQL安装教程(详细版)

今天分享的是Win10系统下MySQL的安装教程,打开MySQL官网,按步骤走呀~ 宝们安装MySQL后,需要简单回顾一下关系型数据库的介绍与历史(History of DataBase) 和 常见关系型数据库产品介绍 呀,后面就会进入正式…

C语言OJ题——1091装箱问题

装箱问题 1.题目2.解题思路3.代码实现4.细节补充说明 1.题目 题目描述 一个工厂生产的产品形状都是长方体,高度都是h,主要有1 * 1,2 * 2,3 * 3,4 * 4,5 * 5,6 * 6等6种。这些产品在邮寄时被包装…

Java使用Redis实现分页功能

分页功能实现应该是比较常见的,对于redis来说,近期刷题就发现了lrange、zrange这些指令,这个指令怎么使用呢? 我们接下来就来讲解下。 目录 指令简介lrangezrange Java实现Redis实现分页功能 指令简介 lrange lrange 是 Redis 中…

Cesium for Unreal 从源码编译到应用——插件编译

一、安装环境 Unreal Engine 5.3 CMake 3.17.5 Microsoft Visual Studio 2019 二、源码准备 下载cesium-unreal-samples工程。 git clone https://github.com/CesiumGS/cesium-unreal-samples.git 然后在工程目录创建Plugins文件夹,并下载cesium-unreal工程。 …

keepalived双主模式测试

文章目录 环境准备部署安装keepavlived配置启动测试模拟Nginx宕机重新启动问题分析 环境准备 测试一下keepalived的双主模式,所谓双主模式就是两个keepavlied节点各持有一个/组虚IP,默认情况下,二者互为主备,同时对外提供服务&am…

ubuntu系统个人部署LangChain过程

官方教程,github和huggingface都需要梯子: 开发环境部署 chatchat-space/Langchain-Chatchat Wiki (github.com) 具体参考官方的,这里额外记录一下官方文档里面没有写的。 安装前,确保openSSL版本是新的 查看当前环境下是否有…

从宏观到微观——泽攸科技ZEM系列台式扫描电子显微镜在岩石分析中的应用

岩石作为地球地壳的主要构成物质之一,其微观结构对于了解地质过程、资源勘探以及工程建设具有重要意义。按照岩石的成因,可以把它们分为三类:岩浆岩、沉积岩和变质岩。在地球表面,沉积岩占据75%的份额,而在地壳深度&am…

简单计算器的实现

思路: 1.记录输入的中缀表达式(运算符在中间,我们正常写的式子) 2.将中缀表达式——>后缀表达式 由左到右遍历中缀表达式,若是数字,用数组或队列记录(记录后缀表达式);若是符号,与操作符栈中的栈顶元素…

SVN服务备份

hotcopy备份 window批处理 保存以下内容到svn_buckup.bat,确保内容的路径正确,最后双击bat文件进行备份即可 echo offrem SVN安装路径 set svn"C:\Program Files\VisualSVN Server\bin"rem 仓库根目录 set homeE:\Repositories\WorkSpacere…

vue2的ElementUI的form表单报错“Error: [ElementForm]unpected width”修复

1. 问题 ElementUI的form表单,当动态切换显示表单时报错 Error: [ElementForm]unpected width。 翻译过来就是form表单的label宽度width出了问题。 2. 分析 参数说明类型可选值默认值label-width表单域标签的宽度,例如 ‘50px’。作为 Form 直接子元…

【Simulink系列】——动态系统仿真 之 连续系统线性连续系统

声明:本系列博客参考有关专业书籍,截图均为自己实操,仅供交流学习! 一、连续系统定义 连续系统输出在时间上连续变化,而非间隔采样取值,满足以下条件: ①输出连续变化,变化的间隔…

OpenAI 的 Sora AI 视频生成器太疯狂了

毫不夸张地说,当我第一次看到 Sora 生成的前几个视频时,我的下巴都惊掉了。 Sora是什么? Sora 是一种人工智能模型,可以根据简单的文本提示生成视频。它能够生成一分钟的高保真视频。 Sora 是一种扩散模型,一种先进的…

阿赵UE学习笔记——15、灯光的移动性概念和构建光照信息

阿赵UE学习笔记目录   大家好,我是阿赵。   继续学习虚幻引擎,这次来学习一下UE里面灯光的移动性概念和构建光照信息。 1、灯光移动性 打开一个带有灯光的场景 在大纲面板里面找到其中一个灯光: 会发现灯光的细节面板里面,…

智慧环卫建设方案

三、软件工程的总体构架 3.1框架构建基准 3.2框架设计 四、业务应用层主要功能模块 4.1数据字典管理模块 数据字典主要包含有(GIS)地理信息管理系统、信息安全管理系统、平台接口管理系统等三个方面的管理应用; 1).(GIS&#…

「Python系列」Python字典

文章目录 一、Python字典创建字典访问字典中的元素修改字典删除字典中的元素遍历字典字典推导式 二、Python字典内置函数&方法内置函数字典方法 三、Python简介四、相关链接 一、Python字典 在Python中,字典(dict)是一个无序的键值对集合…

springboot/ssmHome F家居系统Java家居商城购物管理系统

springboot/ssmHome F家居系统Java家居商城购物管理系统 开发语言:Java 框架:springboot(可改ssm) vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7&…

package.json文件详解

packages.json文件里面配置的属性的含义 name和version 以上两个是最重要的两个属性,否则模块无法被安装,一起形成了它的唯一标识符 模版中内容变化,版本也要随之一起变化 description 描述,方便别人理解模块作用 main 程序…

3、windows环境下vscode开发c/c++环境配置(二)

前言:上一篇文章写了windows环境下,配置vscode的c/c开发环境,这一篇讲vscode开发c/c的配置文件,包括c_cpp_propertues.json,task.json及launch.json。 一、总体流程 通过c/c插件我们就可以来编写c/c程序了&#xff0c…

【ArcGIS微课1000例】0104:二位面状数据转三维多面体(建筑物按高度拉伸)

文章目录 一、加载数据二、添加高度字段三、三维拉伸显示四、生成三维体数据五、注意事项一、加载数据 打开ArcScene,加载配套实验数据(0104.rar中的二维建筑物矢量数据,订阅专栏,获取专栏所有文章阅读权限及配套数据),如下图所示: 二、添加高度字段 本实验将二维数据…

3、电源管理入门之CPU热插拔详解

目录 简介 1. 省电技术概览 (1)、cpu hotplug和idle的区别? 2. 热插拔代码介绍 (1)、为什么以cpu1为例? 3. ATF中处理 简介 之前介绍了电源的开机和关机重启,本小节开始介绍省电的技术,其中最暴力的省电方法就是直接拔核hotplug处理,就像需要…