尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

LATERAL VIEW POSEXPLODE ~ Hive/Spark SQL

LATERAL VIEW POSEXPLODE ~ Hive/Spark SQL
📅 发布时间:2026/6/24 3:58:39

背景

LATERAL VIEW:侧视图,用来将数组 / Map 等集合字段炸开多行,实现一对多关联
posexplode():爆炸函数,和 explode 类似,但同时返回下标位置 + 元素值
LATERAL VIEW posexplode(数组字段) AS pos, val
作用:把数组拆成多行,额外带出每个元素在数组中的索引下标

explode vs posexplode 核心区别

explode(arr)

只输出数组里的元素,没有下标

explode(array('a','b','c'))ASval

结果:

val a b c

posexplode(arr)

输出两列:pos(下标,从 0 开始)、val(元素)

posexplode(array('a','b','c'))ASpos,val

结果:

pos val 0 a 1 b 2 c

LATERAL VIEW 作用

如果直接 select posexplode(col),只能单独查爆炸函数;
当需要同时查询原表普通字段 + 炸开后的多行数据,必须搭配 LATERAL VIEW

标准语法模板

SELECT原表普通字段,pos,-- 数组下标val-- 数组元素FROM表名 LATERALVIEWposexplode(数组字段)tmpASpos,val;

tmp:侧视图别名(可省略,建议写上)
pos:自定义下标列名
val:自定义元素列名

实战示例

id name hobby_list 1 小明 ["篮球","游戏"] 2 小红 ["看书","画画","跑步"]
SELECTid,name,pos,hobbyFROMuser_info LATERALVIEWposexplode(hobby_list)tASpos,hobby;

输出结果

id name pos hobby 1 小明 0 篮球 1 小明 1 游戏 2 小红 0 看书 2 小红 1 画画 2 小红 2 跑步

常见使用场景

需要区分数组元素顺序
比如日志数组按时间有序,pos 代表第几条行为;
取数组第 N 个元素做过滤

-- 只保留数组第一个元素(pos=0)WHEREpos=0

有序数组转宽表
根据 pos 做行转列 collect_list + case when pos=x;
有序标签打分:下标越小权重越高,pos 参与计算。

关键特性 & 坑点

下标从 0 开始,不是 1
数组为 null / [] 空数组:整条行会消失(不生成任何行)
想保留空行用

LATERALVIEWOUTERposexplode(...);

支持嵌套:多个 LATERAL VIEW 连续写,拆解多层数组;
Map 类型配套:posexplode(map) 会返回 pos, key, value 三列

OUTER 关键字补充(保留空数据)

不加 OUTER:数组为空则主表这条数据直接丢失
加 OUTER:数组为空时 pos=null, val=null,主表数据保留

LATERALVIEWOUTERposexplode(hobby_list)tASpos,hobby

相关新闻

  • 2026企业薪资架构演进:利用AI Agent攻克多地社保规则差异化的实战指南
  • 计算机毕业设计之空气质量指数数据采集可视化系统
  • 下载量超2.8万次的办公效率软件,错过就没有了!

最新新闻

  • 一个人干五人活:Claude-mem、Agents HQ与GitHub CLI协同实战
  • Hermes Agent安装指南:本地AI工作台的零配置部署实践
  • 本地AI Agent+Obsidian构建离线智能工作流
  • 竞赛动态更新机制:构建透明高效的竞赛沟通与管理体系
  • MATLAB自动化报告生成实战:从数据处理到一键生成专业文档
  • MQX Lite RTOS:轻量级实时内核在资源受限MCU中的核心机制与实战应用

日新闻

  • 终极指南:如何用shadPS4在电脑上免费畅玩PS4游戏
  • 打造个性化Instagram Clone:主题定制与用户体验优化技巧
  • 未来展望:RoseTTAFold-All-Atom的发展路线图与社区支持资源汇总

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号