当前位置: 首页 > news >正文

ETL_场景练习

1 行列转换

(1) 列拆分为多行

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

select字段列,hobby2
from tbl
-- lateral view udtf(expression) tablealias as columnalias (‘,’ columnalias)
lateral view explode(split(hobby,';')) temp as hobby2

(2) 行扁平化

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

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) 列转行

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

selectname,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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 建投数据通过ISO9001再认证
  • [Postman]接口自动化测试入门
  • 探索Promise:JavaScript异步编程的基石
  • 组件通信——provide 和 inject 实现爷孙组件通信
  • 机器学习和深度学习的区别是什么?
  • 【WPF】Border的使用
  • 【Java数据结构】泛型的进阶部分(泛型通配符)
  • 数据挖掘顶会ICDM 2024论文分享┆MetaSTC:一种基于聚类和元学习的时空预测框架
  • JS获取页面中video标签视频的封面和时长
  • ctfshow-命令执行
  • nacos 安装 centos7 docker
  • Pytorch深度学习快速入门笔记【小土堆】
  • Linux基础环境搭建(CentOS7)- 虚拟机准备_搭建hadoop能使用桥接模式吗
  • HTML5中`<area>`标签深入全面解析
  • HS光流法原理与实现
  • 77. Combinations
  • Android 控件背景颜色处理
  • exports和module.exports
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • Java知识点总结(JavaIO-打印流)
  • React+TypeScript入门
  • vue-cli3搭建项目
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 技术发展面试
  • 简单基于spring的redis配置(单机和集群模式)
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 前端性能优化--懒加载和预加载
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 硬币翻转问题,区间操作
  • 正则与JS中的正则
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (06)金属布线——为半导体注入生命的连接
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (solr系列:一)使用tomcat部署solr服务
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (十六)、把镜像推送到私有化 Docker 仓库
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET : 在VS2008中计算代码度量值
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET Core Web APi类库如何内嵌运行?
  • .NET Core中如何集成RabbitMQ
  • .net dataexcel 脚本公式 函数源码
  • .NET 的程序集加载上下文
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .NET程序集编辑器/调试器 dnSpy 使用介绍
  • .net生成的类,跨工程调用显示注释
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具