ETL_场景练习

1 行列转换

(1) 列拆分为多行

把指定字段按指定分隔符进行拆分为多行,然后其它字段直接复制.

sql 复制代码
select
     字段列
    ,hobby2
from tbl
-- lateral view udtf(expression) tablealias as columnalias (',' columnalias)
lateral view explode(split(hobby,';')) temp as hobby2

(2) 行扁平化

把同一组的多行数据合并成为一行.

sql 复制代码
select 
  id, 
  name, 
  age, 
  split(concat_ws(':',collect_list(hobby)),':')[0] as hobby1,
  split(concat_ws(':',collect_list(hobby)),':')[1] as hobby2,
  split(concat_ws(':',collect_list(hobby)),':')[2] as hobby3
from tbl
group by id, name, age;

(3) 列转行

如果数据一列有相同的值,按照指定的字段,将其中一列的字段内容变成不同的列,然后把多行数据转换为一行数据.

sql 复制代码
select
    name
   ,max(if(wek = '周一',work_hour,0)) as mon
   ,max(if(wek = '周二',work_hour,0)) as tue
   ,max(if(wek = '周三',work_hour,0)) as wed
   ,max(if(wek = '周四',work_hour,0)) as thu
   ,max(if(wek = '周五',work_hour,0)) as fi
   ,max(if(wek = '周六',work_hour,0)) as sat
   ,max(if(wek = '周日',work_hour,0)) as sun
from tbl
group by name

(4) 行转列

把数据字段的字段名转换为一列,把数据行变为数据列.

select name, 'mon' as wek, mon as work_hour from tbl
union all
select name, 'tue' as wek, tue as work_hour from tbl
union all
select name, 'wed' as wek, wed as work_hour from tbl
union all
select name, 'thu' as wek, thu as work_hour from tbl
union all
select name, 'fri' as wek, fri as work_hour from tbl
union all
select name, 'sat' as wek, sat as work_hour from tbl
union all
select name, 'sun' as wek, sun as work_hour from tbl
相关推荐
盼兮*33 分钟前
Centos7环境下Hive的安装
大数据·数据仓库·hive·hadoop
Hello.Reader2 小时前
深入理解 ClickHouse 的性能调优与最佳实践
大数据·数据仓库·clickhouse·数据分析
SelectDB技术团队14 小时前
查询性能提升 10 倍、存储空间节省 65%,Apache Doris 半结构化数据分析方案及典型场景
数据结构·数据仓库·elasticsearch·log4j·json
大数据深度洞察16 小时前
中级练习[6]:Hive SQL订单配送与用户社交行为分析
大数据·数据仓库·hive·sql
Data 31720 小时前
Hadoop生态圈拓展内容(二)
大数据·数据仓库·hive·hadoop
Data 3171 天前
经典sql题(六)查找用户每月累积访问次数
大数据·数据库·数据仓库·sql·mysql
Data 3171 天前
经典sql题(三)查找股票价格波峰波谷
大数据·数据库·数据仓库·sql
Mephisto.java1 天前
【Scala入门学习】基本数据类型和变量声明
大数据·hive·kafka·scala·涛思数据·scala3.1.2
Wuxiaoming1352 天前
flutter hive的使用
数据仓库·hive·hadoop
m0_374381812 天前
分享一些成功的 SQL 优化案例
大数据·数据库·数据仓库·爬虫·python·oracle