news 2026/5/2 14:41:09

hive sql行转列,列转行sql的实例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
hive sql行转列,列转行sql的实例

在 Hive SQL 中,行转列和列转行是常见的数据转换操作。以下是详细说明和示例:

一、行转列(多行转多列)

场景:将同一分组下的多行数据合并为单行,不同值转为新列(如学生各科成绩横向展示)。

数据示例(student_scores):

student_idsubjectscore
1Math90
1English85
2Math92

目标(每个学生一行,科目成绩转为列):

student_idMathEnglish
19085
292NULL

SQL 实现

SELECT student_id, MAX(CASE WHEN subject = 'Math' THEN score END) AS Math, MAX(CASE WHEN subject = 'English' THEN score END) AS English FROM student_scores GROUP BY student_id;

关键点

  1. 使用CASE WHEN按条件生成新列
  2. 用聚合函数(如MAX/MIN/SUM)确保单行输出
  3. 必须配合GROUP BY分组字段

二、列转行(多列转多行)

场景:将单行的多列数据拆分为多行(如将横向科目成绩转为纵向记录)。

数据示例(student_scores_wide):

student_idMathEnglish
19085
292NULL

目标(恢复为行式存储):

student_idsubjectscore
1Math90
1English85
2Math92
2EnglishNULL

SQL 实现

SELECT student_id, 'Math' AS subject, Math AS score FROM student_scores_wide UNION ALL SELECT student_id, 'English' AS subject, English AS score FROM student_scores_wide;

优化方案(使用LATERAL VIEW explode(),Hive 特有):

SELECT student_id, subject, score FROM student_scores_wide LATERAL VIEW explode( map( -- 构建科目-分数的键值对 'Math', Math, 'English', English ) ) subjects AS subject, score;

关键点

  1. UNION ALL适合列数量固定的场景
  2. LATERAL VIEW + explode(map)动态处理多列
  3. 注意处理NULL值(Hive 中NULL会正常保留)

三、高级用法:动态行列转换

当列名不固定时(如新增科目),需结合 Hive 动态 SQL 或预处理:

  1. 行转列动态化
    使用collect_list+ 拼接字符串,再通过 UDF 解析(较复杂,通常需借助外部脚本生成 SQL)。
  2. 列转行动态化
    通过 Hive 元数据获取列名,动态生成UNION ALL语句(示例略,需依赖 Hive 变量或编程接口)。

总结对比

操作核心方法适用场景
行转列CASE WHEN+ 聚合函数 +GROUP BY固定列名,聚合统计
列转行UNION ALLLATERAL VIEW explode列数量少或需动态处理

提示:Hive 3.0+ 支持LATERAL VIEW inline(array_of_structs),但需先构造结构体数组。实际使用时请根据数据规模和复杂度选择合适方案。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 5:52:49

cmd的基础知识介绍

在Windows世界中,命令提示符是与Linux的Bash相对应的核心命令行工具。以下是关于CMD的全面介绍。 一、CMD是什么? 命令提示符是Windows操作系统的原生命令行解释器,基于经典的MS-DOS系统。 位置:通常是 C:\Windows\System32\cmd.e…

作者头像 李华
网站建设 2026/5/1 5:52:16

分库分表迁移失败率下降80%?揭秘高效PHP数据迁移方案

第一章:PHP分库分表数据迁移的挑战与演进在现代高并发、大数据量的业务场景中,单一数据库已难以支撑海量请求和存储需求。随着业务增长,PHP应用常面临数据库性能瓶颈,促使系统向分库分表架构演进。然而,这一转变带来了…

作者头像 李华
网站建设 2026/5/1 8:17:09

负荷预测一种改进支持向量机的电力负荷预测方法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码及仿真咨询…

作者头像 李华
网站建设 2026/5/1 7:03:20

涵盖各专业的十大毕业论文选题平台推荐与选题步骤详解

10大论文选题工具核心对比 排名 工具名称 核心功能 效率评分 适用场景 1 aicheck 智能选题大纲生成 ★★★★★ 完全无头绪时的选题生成 2 aibiye 选题优化可行性分析 ★★★★☆ 已有初步方向的优化调整 3 知网 学术资源库选题参考 ★★★★☆ 专业领域深度…

作者头像 李华
网站建设 2026/5/1 19:21:54

Legacy代码迁移到PHP 8.7总报错?,揭秘7类常见兼容性问题及修复方案

第一章:PHP 8.7 兼容性测试随着 PHP 8.7 的临近发布,开发者社区对新版本的兼容性关注日益增加。在正式升级前,进行系统性的兼容性测试是确保应用稳定运行的关键步骤。本章将介绍如何构建有效的测试策略,并识别潜在的破坏性变更。环…

作者头像 李华
网站建设 2026/5/1 17:42:16

GLM-TTS能否生成动物叫声?非人声模拟扩展实验

GLM-TTS能否生成动物叫声?非人声模拟扩展实验 在影视后期制作中,音效设计师常面临一个难题:如何快速生成一段“像狼嚎但又带点科幻感”的生物叫声?传统做法是采样真实录音再进行变调处理,耗时且缺乏灵活性。如今&#…

作者头像 李华