当前位置: 首页 > news >正文

Hive行转列[一行拆分成多行/一列拆分成多列]

场景:

hive有张表armmttxn_tmp,其中有一个字段lot_number,该字段以逗号分隔开多个值,每个值又以冒号来分割料号和数量,如:A3220089:-40,A3220090:-40,A3220091:-40,A3220083:-40,A3220087:-40,A3220086:-40,A3220088:-40,A3220084:-40,A3220081:-40,A3220082:-40,A3220092:-40,A3220093:-40,A3220085:-40,A3220094:-40。

要求:

把该字段拆分开来,并且把料号和数量单独列出,也就是分成两列。

原数据:

select 
key_id,
lot_number 
from armmttxn_tmp
where key_id = '48641906';

用到的函数:split()、explode()

 步骤:

step1:以逗号拆分开,如下:

["A3220089:-40","A3220090:-40","A3220091:-40","A3220083:-40","A3220087:-40","A3220086:-40","A3220088:-40","A3220084:-40","A3220081:-40","A3220082:-40","A3220092:-40","A3220093:-40","A3220085:-40","A3220094:-40"]

使用split函数,把数据拆分开

select 
key_id ,
split(lot_number, ',') lot_number
from armmttxn_tmp
where key_id = '48641906';

 step2:一行变成多行

select 
explode(split(lot_number, ',')) lot_number
from armmttxn_tmp
where key_id = '48641906';

 这里如果加上key_id字段,会怎样呢?

SQL 错误 [10081] [42000]: Error while compiling statement: FAILED: SemanticException [Error 10081]: UDTF's are not supported outside the SELECT clause, nor nested in expressions

原因:当使用UDTF函数的时候,hive只允许对拆分字段进行访问。
所以,可以这样使用:select explode(split(lot_number, ',')) lot_number from armmttxn_tmp where key_id = '48641906'; 

但不可以这样使用:select key_id ,explode(split(lot_number, ',')) lot_number from armmttxn_tmp where key_id = '48641906';

如果想访问除了拆分字段以外 的字段,怎么办呢?
用lateral view侧视图!

lateral view为侧视图,是为了配合UDTF来使用,把某一行数据拆分成多行数据.不加lateral view的UDTF只能提取单个字段拆分,并不能塞会原来数据表中.加上lateral view就可以将拆分的单个字段数据与原始表数据关联上.

注意:在使用lateral view的时候需要指定视图别名

--表名 lateral view UDTF(xxx) 视图别名(虚拟表名) as a,b,c(列别名)

--lateral view explode 相当于一个拆分lot_number字段的虚表,然后与原表进行关联.

step3:拆分的字段与原始表数据关联上.

select 
key_id ,
split(view.*,':') lot_number
from armmttxn_tmp lateral view explode(split(lot_number, ',')) view
where key_id = '48641906';

但还不是我们想要的最终结果,还需要把lot_number拆分成两列

step4: 拆分成两列

select 
key_id ,
split(view.*,':')[size(split(view.*, ':'))-2] as lot_number,
split(view.*,':')[size(split(view.*, ':'))-1] as quantity
from armmttxn_tmp lateral view explode(split(lot_number, ',')) view
where key_id = '48641906';

相关文章:

Hive行转列[一行拆分成多行/一列拆分成多列]

场景: hive有张表armmttxn_tmp,其中有一个字段lot_number,该字段以逗号分隔开多个值,每个值又以冒号来分割料号和数量,如:A3220089:-40,A3220090:-40,A3220091:-40,A3220083:-40,A3220087:-40,A3220086:-4…...

TypeScript系列之类型 string

文章の目录 背景写在最后 背景 与JavaScript不同的是,TypeScript使用的是静态类型,比如说它指定了变量可以保存的数据类型。如下面代码所示,如果在JavaScript中,指定变量可以保存的数据类型,会报错:类型注…...

【C++】动态内存管理 ③ ( C++ 对象的动态创建和释放 | new 运算符 为类对象 分配内存 | delete 运算符 释放对象内存 )

文章目录 一、C 对象的动态创建和释放1、C 语言 对象的动态创建和释放 的方式2、C 语言 对象的动态创建和释放 的方式 二、代码示例 - 对象的动态创建和释放 一、C 对象的动态创建和释放 使用 C 语言中的 malloc 函数 可以为 类对象 分配内存 ; 使用 free 函数可以释放上述分配…...

AMS爆炸来袭,上线即巅峰

1.关于首发项目Antmons(AMS)空投结果 Gate.io Startup 首发项目Antmons代币AMS于Aug15th,AM 07:00开始下单,24小时内下单同等对待总共有15,950人下单,下单总价值超过1,000万美金分发系数约为0.001640495298341。根据上线规则AMS项目认购成功,…...

是面试官放水,还是公司实在是太缺人?这都没挂,华为原来这么容易进...

华为是大企业,是不是很难进去啊?” “在华为做软件测试,能得到很好的发展吗? 一进去就有9.5K,其实也没有想的那么难” 直到现在,心情都还是无比激动! 本人211非科班,之前在字节和腾…...

怒刷LeetCode的第2天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一:滑动窗口 方法二:双指针加哈希表 第二题 题目来源 题目内容 解决方法 方法一:二分查找 方法二:归并排序 方法三:分治法 第三题 题目来源 题目内容 解…...

AUTOSAR汽车电子嵌入式编程精讲300篇-车载CAN总线网络的异常检测(续)

目录 车载 CAN 总线网络异常检测技术 3.1 车载 CAN 总线网络异常检测技术概述 3.1.1基于统计的异...

mojo安装

docker安装mojo 官网 https://developer.modular.com/login 很奇怪登录页面不显示 类似于网站劫持 docker 安装mojo带jupyterlab的方式 https://hub.docker.com/r/lmq886/mojojupyterlab 拉取镜像 docker pull lmq886/mojojupyterlab docker pull lmq886/mojojupyterlab:1.2 启…...

【探索Linux】—— 强大的命令行工具 P.8(进程地址空间)

阅读导航 前言一、内存空间分布二、什么是进程地址空间1. 概念2. 进程地址空间的组成 三、进程地址空间的设计原理1. 基本原理2. 虚拟地址空间 概念 大小和范围 作用 虚拟地址空间的优点 3. 页表 四、为什么要有地址空间五、总结温馨提示 前言 前面我们讲了C语言的基础知识&am…...

vue3 - Element Plus 切换主题色及el-button hover颜色不生效的解决方法

GitHub Demo 地址 在线预览 Element Plus 自定义主题官方文档 如果您想要通过 js 控制 css 变量,可以这样做: // document.documentElement 是全局变量时 const el document.documentElement // const el document.getElementById(xxx)// 获取 css 变…...

【C++面向对象侯捷】1.C++编程简介

文章目录 视频来源:我的百度网盘...

年龄大了转嵌入式有机会吗?

年龄大了转嵌入式有机会吗? 首先,说下结论:年龄并不是限制转行嵌入式软件开发的因素,只要具备一定的编程和电子基础知识,认真学习和实践,是可以成为优秀的嵌入式软件开发工程师的。最近很多小伙伴找我&…...

Mysql高级——索引优化和查询优化(2)

5. 排序优化 5.1 排序优化 问题:在 WHERE 条件字段上加索引,但是为什么在 ORDER BY 字段上还要加索引呢? 优化建议: SQL 中,可以在 WHERE 子句和 ORDER BY 子句中使用索引,目的是在 WHERE 子句中避免全表…...

SpringMVC的拦截器和JSR303的使用

目录 一、JSR303 二、拦截器(interceptor) 一、JSR303 1.1.什么是JSR303 JSR 303,它是Java EE(现在称为Jakarta EE)规范中的一部分。JSR 303定义了一种用于验证Java对象的标准规范,也称为Bean验证。 Bean验…...

servlet中doGet方法无法读取body中的数据

servlet中doGet方法不支持读取body中的数据。...

Ubuntu MongoDB账户密码设置

1.创建用户 在MongoDB中,可以使用db.createUser()方法来创建用户。该方法接受一个包含用户名、密码和角色等信息的文档作为参数。 // 连接到MongoDB数据库 mongo// 切换到admin数据库 use admin// 创建用户 db.createUser({user: "admin",pwd: "adm…...

指针进阶(3)

9. 模拟实现排序函数 这里我们使用冒泡排序算法,模拟实现一个排序函数,可以排序任意类型的数据。 这段代码可以排序整型数据,我们需要在这段代码的基础上进行改进,使得它可以排序任意类型的数据。 #define _CRT_SECURE_NO_WARN…...

信息检索与数据挖掘 | (二)布尔检索与倒排索引

文章目录 📚词项-文档关联矩阵🐇相关名词🐇词项-文档关联矩阵的布尔查询处理 📚倒排索引🐇关于索引🐇建立索引🐇基于倒排索引的布尔查询处理🐇查询优化 📚字典数据结构&a…...

【学习笔记】EC-Final 2022 K. Magic

最近的题都只会抄题解😅 首先,操作顺序会影响答案,因此不能直接贪心。其次,因为是求贡献最大,所以可以考虑枚举最终哪些位置对答案产生了贡献,进而转化为全局贡献。 1.1 1.1 1.1 如果 [ l 1 , r 1 ) ⊆ [ …...

MySQL数据库笔记

文章目录 一、初识MySQL1.1、什么是数据库1.2、数据库分类1.3、MySQL简介 二、操作数据库2.1、操作数据库(了解)2.2、数据库的列类型2.3、数据库的字段属性(重点)2.4、创建数据库表(重点)2.5、数据表的类型…...

python-flask-djangol框架的 综合游戏攻略社区论坛交流系统的设计

目录需求分析与功能规划技术栈选择数据库设计核心功能实现社区互动设计性能优化安全措施部署与测试扩展功能项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作需求分析与功能规划 明确游戏攻略社区的核心需求:用户注册…...

当 AI 开始制造 AI:递归自我提升时代的人类工程师生存指南

1. 核心命题:人类瓶颈的消失与算力主导的新纪元 1.1 递归自我提升的拐点降临 1.1.1 从"人类设计"到"自我迭代"的范式转移 人工智能发展正经历一场深刻的范式革命,其核心特征是从"人类工程师主导设计"向"AI系统自主迭代进化"的根本…...

Matlab进阶技巧:如何用hatchfill2和legendflex打造专业级纹理柱状图

Matlab数据可视化进阶:用hatchfill2与legendflex打造学术级纹理柱状图 在科研论文或商业报告中,单调的纯色柱状图往往难以清晰传达多维数据的层次关系。当需要区分5种以上的数据类别时,即使用尽所有高对比度颜色,依然会面临辨识度…...

松江少儿英语口碑好的?

松江少儿英语口碑好的 环球乐学少儿英语,指出幼儿英语学习三大痛点: 1. 兴趣不足易抵触:教学形式枯燥,多以机械记单词、跟读为主,不符合幼儿认知特点,易产生厌学情绪。 2. 缺语境不会运用&#xff1a…...

OpenClaw成本优化:Qwen3.5-9B自部署接口降低token消耗实践

OpenClaw成本优化:Qwen3.5-9B自部署接口降低token消耗实践 1. 为什么需要关注OpenClaw的token消耗? 去年夏天,当我第一次用OpenClaw自动化处理月度报表时,收到了令人咋舌的账单——短短一周的自动化操作消耗了价值近200美元的AP…...

戴森球计划工厂蓝图终极指南:3000+精选设计让你的太空帝国建设效率翻倍

戴森球计划工厂蓝图终极指南:3000精选设计让你的太空帝国建设效率翻倍 【免费下载链接】FactoryBluePrints 游戏戴森球计划的**工厂**蓝图仓库 项目地址: https://gitcode.com/GitHub_Trending/fa/FactoryBluePrints FactoryBluePrints是一个专为戴森球计划玩…...

从视频处理到医疗影像:Conv3D输出形状计算中的那些‘坑’与高效设计指南

从视频处理到医疗影像:Conv3D输出形状计算中的那些‘坑’与高效设计指南 当你在深夜调试一个3D卷积神经网络时,突然发现输出的特征图尺寸比预期小了整整一半——这种场景对于处理视频分类或医疗影像的工程师来说再熟悉不过了。Conv3D层看似简单的参数设…...

VideoAgentTrek-ScreenFilter项目依赖管理:.NET生态下的客户端封装库开发

VideoAgentTrek-ScreenFilter项目依赖管理:.NET生态下的客户端封装库开发 最近在做一个视频处理相关的项目,需要频繁调用VideoAgentTrek-ScreenFilter的HTTP API。每次调用都得手动拼装HTTP请求、处理序列化、解析响应,代码里到处都是重复的…...

iStoreOS软路由结合Cpolar内网穿透:打造稳定高效的居家远程办公网络

1. 为什么你需要iStoreOS软路由Cpolar组合? 最近两年远程办公越来越普遍,但很多朋友都遇到过这样的困扰:公司电脑里的文件急着要用,跑回办公室又太麻烦;出差在外需要调取内网资料,VPN连接却卡成幻灯片。我自…...

Python代码秒变Linux原生二进制:手把手带你用2026最新toolchain完成AOT编译(含交叉编译Windows/Mac/LoongArch三平台完整脚本)

第一章:Python代码秒变Linux原生二进制:手把手带你用2026最新toolchain完成AOT编译(含交叉编译Windows/Mac/LoongArch三平台完整脚本) Python长期受限于CPython解释器与GIL,难以直接生成真正独立、零依赖的原生可执行文…...