版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
版权
sql学习专栏收录该内容
3 篇文章0 订阅
订阅专栏
在做数据转换、清洗的过程中,经常会对行进行拆分、一行数据拆分为多行数据,下面是简单的例子:
如图表里有如下数据:
最终要得到结果如下:
先用split进行分割得到一个数组,在用explode拆分数组。
LATERAL VIEW explode(split(b,',')) zqm AS num:解释 zqm:指代虚表视图的名称(不可缺少),num:处理后数据的名称。
对比两个Hsql,使用LATERAL VIEW的目的是为了带出表里其他字段
更多情况是explode、split、concat_ws、collect_set会混合使用。
收藏
一键三连
扫一扫,分享海报
专栏目录
https://blog.csdn.net/yeweiouyang/article/details/46352845 业务背景 hive表test_user_browse记录了用户浏览过的商品,该表的数据如下: username product John product_a,product_b,product_c,product_d Tom product_e,product...
[ Author: Fu Renjie ] Ø一行变多行过程: //一行拆分多行的操作:主要是拆分subcat不为空的记录,sql语句如下: insert into table today_cust_behavior_single select msisdn ,flow_start,flow_end,kk as subcat from today_cust_behavi
目录 一、使用explode函数将hive表中的Map和Array字段数据进行拆分 二、使用explode函数拆分json字符串数据 三、配合LATERALVIEW使用 四、列转行五、行转列 六、reflect函数 七、窗口函数与分析函数 1、创建hive表并加载数据 2、窗口函数 3、OVER从句 4、分析函数 5、增强的聚合Cube和Grouping和Rollup 6、使用cube和ROLLUP根据GROUP BY的维度的所有组合进行聚合。 一、使用explode函...
hive 中通过lateralview 与explode 实现行转列功能 explode作用是处理map结构的字段,使用案例如下(hive自带map,struct,array字段类型): drop table if exists XX; create table XX( area string ,goods_id string ,sale_info string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS
split()函数是用于切分数据,也就是将一串字符串切割成了一个数组,标准格式为split(str,regex),支持正则切分不过有点奇怪的是,对于 “.”,"|“这样的特殊字符,不加”“的时候是特殊字符,加了以后才是普通字符,而对于”\d"的字符,需要加"“后才是特殊字符,就是是说”\d"才是匹配数字。 假设我有一张表(demo)如下: 用split()函数对name字段切分 select s...
mysql跟hive列转行/行转列一样,但是多行转一行,一行转多行就不太一样了 链接:mysql行转列,多行转一行,列转行,一行转多列 hive 启动hive时./hive -S (去除MR打印日志) hive命令行 sethive.exec.mode.local.auto=true; 设置本地模式 数据准备: create table student_score(s_id int,s_name string,s_sub string,s_score bigint); insert into stu
select a.planid,b.mias,0 miaid into [1_cache3] from (select planid,mias=convert(xml,''+replace(mias,',','')+'') ...