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
相关推荐
freejackman31 分钟前
【架构篇】双遍历 + 多栈协同:手撸 SQL 血缘引擎的架构思考
java·大数据·数据库·hive·sql·架构·spark
陈年老古董2 小时前
ClickHouse 单机搭建记录
hive·笔记·学习·clickhouse·硬件架构
陈年老古董3 小时前
Spark 3.1.3 集群搭建 + Spark-SQL 整合 Hive 记录
hive·sql·spark
FserSuN3 小时前
Hive 分区表存储与查询优化学习总结
hive·hadoop·学习
注塑机数据采集联网21 小时前
数据采集网关入门:ZK-D1/D3从零开始构建你的数据运用
大数据·数据仓库·人工智能·物联网·数据库架构·注塑机网关
roman_日积跬步-终至千里1 天前
【数据建模入门】从一家小店看懂数仓与机器学习:先理业务,再串技术
数据仓库·人工智能·机器学习·数据分析·数据建模
步行cgn1 天前
为什么既要 web.xml 又要 springmvc.xml?能不能只配一个?
xml·前端·hive
程序员梅雨2 天前
【从零开始学习数据仓库 | 第二篇】: 拉链表 & 数仓分层
大数据·数据仓库·学习
roman_日积跬步-终至千里2 天前
数仓开发的三层责任:业务定义、模型设计与 SQL 实现
数据库·数据仓库·sql·数据建模
@小匠2 天前
Flink + Iceberg 批量失败复盘:一次超时如何变成 Hive Metastore 锁泄漏
大数据·hive·flink