hive lateral view函数简介
函数简介
lateral view 函数用于将数据一行转多列,一般与explode、split、collect_set函数一起使用
基本使用
案例A:现在有一张学生绩效表,记录了每个学生的所有科目的成绩, 需要查询所有拿了A的学生数
student_name(string) | student_course(array[]) |
stuA | [‘A’,‘B’,‘C’] |
stuB | [‘A’,‘C’] |
stuC | [‘B’,‘C’] |
现在使用lateral view + explode函数对数据进行拆解,多行变一行
select student_name,course_value from student_course LATERRAL VIEW explode(student) tpTable AS course_v
拆解完成之后所得数据如下
student_name course_value
stuA ‘A’
stuA ‘B’
stuA ‘C’
stuB ‘A’
stuB ‘C’
stuC ‘B’
stuC ‘C’
接下来就可以进行聚合分析了:
select course_value,count(distinct student_name) as stu_num from course_single group by course_value where course_value='A'
结果:
course_value stu_num
‘A’ 2
案例2:现有一张游戏表,知道2个字段,一个gameId:String, 另一个 tags:Array
现在需要把tags中的tag数组展开,即”一个gameID只能对应一个tag“
代码
1 2 3 4 | select t.gameId, singleTag from ( select gameId, tags from gamepublish.knights_game where date=20181127 limit 20 ) t LATERAL VIEW explode(t.tags) v as singleTag |
结果:
t.gameid singletag
62245388 {“tagid”:1,“tagname”:“角色扮演”,“parent”:1}
62235467 {“tagid”:684,“tagname”:“3D”,“parent”:14}
62235467 {“tagid”:1128,“tagname”:“跨服”,“parent”:4110}
62235467 {“tagid”:443,“tagname”:“ARPG”,“parent”:1}
62235467 {“tagid”:1,“tagname”:“角色扮演”,“parent”:1}
62235467 {“tagid”:1066,“tagname”:“MMORPG”,“parent”:1}
62235467 {“tagid”:1006,“tagname”:“魔幻”,“parent”:16}
62232946 {“tagid”:683,“tagname”:“2D”,“parent”:14}
62232946 {“tagid”:534,“tagname”:“水墨风”,“parent”:14}
62232946 {“tagid”:1022,“tagname”:“中国风”,“parent”:14}
62232946 {“tagid”:1,“tagname”:“角色扮演”,“parent”:1}
62232946 {“tagid”:636,“tagname”:“冒险”,“parent”:2}
62232946 {“tagid”:2,“tagname”:“动作冒险”,“parent”:2}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?