SQL:LATERAL VIEW函数解析多嵌套的json

SQL:LATERAL VIEW函数解析多嵌套的json,第1张

数据处理中,一遇到json就头大,很长一段时间里,明知lateral view函数是个好东西,但就是很抗拒去学,都是找数仓的同事先理好字段直接用,顺便以菜鸡的身份,同情和膜拜一下埋头洗脏数的数仓同学,大佬辛苦。。

前段时间加入到一个数据建设的项目中作为先锋军打头阵,没办法遇到json还是硬着头皮终于学会了lateral view用法,感受:困难只是心中的一座大山!也不过如此!

我肯定我过不了几天一定会忘掉(其实已经忘掉一点了。。),没有好记性拿起烂笔头,记录在这里吧。

假设T表中有个json_txt字段取值格式如下:

如果我要得到每个学生的所有信息字段,则需要将json中的信息解析出来。

得到结果如下:

但是score和rank是以数列形式存储在同一行,不方便计算,用trans_array()函数可以解决啦:

得到的结果就是纵列的分数明细:

一、Explode用法

使用如下图:

二、Lateral View用法

首先准备一张表test,test表的数据结构如下

输出结果:

结果注解:

test本身只有4条记录, explode(map('1',100,'2',200)) 本身只有2条记录,

上述sql的原理实质上是对2个结果集做了笛卡尔积。

实现形式如下:

输出如下:


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/7623650.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-07
下一篇2023-04-07

发表评论

登录后才能评论

评论列表(0条)

    保存