MaxCompute 行转列 列转行

简介: 搜了一下行转列、列转行,除了隐林一篇之外,好像没有了最近在帮助项目组初学者整理初学者文档,刚好用关系型数据库的例子变化实现了一个借鉴:https://developer.aliyun.com/article/40518供大家参考

发现MaxCompute相关的帖子真不多,补充发布一个。实际上,实现行转列和列转行的方法,根据实际需求应该还有很多种方法。MaxCompute其实也提供了很多的函数来帮助大家实现,有机会可以多探索几种方式。
一、行转列

with ta as (
select * from values
 ('张三' , '语文' , 74)
,('张三' , '数学' , 83)
,('张三' , '物理' , 93)
,('李四' , '语文' , 74)
,('李四' , '数学' , 84)
,('李四' , '物理' , 94)
t(name , subject , result))

--方法一:使用case when end结构,通用写法
select name as 姓名
,max(case subject when '语文' then result end) as 语文
,max(case subject when '数学' then result end) as 数学
,max(case subject when '物理' then result end) as 物理
  from ta
 group by name
;
+--------+------------+------------+------------+
| 姓名 | 语文     | 数学     | 物理     |
+--------+------------+------------+------------+
| 张三 | 74         | 83         | 93         |
| 李四 | 74         | 84         | 94         |
+--------+------------+------------+------------+
--方法二:非要多写一步的写法
with ta as (
select * from values
 ('张三' , '语文' , 74)
,('张三' , '数学' , 83)
,('张三' , '物理' , 93)
,('李四' , '语文' , 74)
,('李四' , '数学' , 84)
,('李四' , '物理' , 94)
t(name , subject , result))
select name
      ,keyvalue(subject,'语文') as 语文
      ,keyvalue(subject,'数学') as 数学
      ,keyvalue(subject,'物理') as 物理
  from(
select name,wm_concat(';',concat(subject,':',result))as subject
  from ta
 group by name)tt
;

这个方法用wm_concat做聚合之前,先用concat把多列合并为一列。然后在拼接后用keyvalue去解析出来。
二、列转行

with tb as (
select * from values
 ('张三', 88,99,89)
,('李四', 78,77,87)
t(name , subject_yw, subject_sx, subject_wl))
--方法一:使用union all,通用写法
select name,subject,result
  from(
select name,'语文' as subject,subject_yw as result from tb
 union all
select name,'数学' as subject,subject_sx as result from tb
 union all
select name,'物理' as subject,subject_wl as result from tb)tt;
+------+---------+--------+
| name | subject | result |
+------+---------+--------+
| 张三 | 语文  | 88     |
| 张三 | 数学  | 99     |
| 张三 | 物理  | 89     |
| 李四 | 语文  | 78     |
| 李四 | 数学  | 77     |
| 李四 | 物理  | 87     |
+------+---------+--------+
with tb as (
select * from values
 ('张三', 88,99,89)
,('李四', 78,77,87)
t(name , subject_yw, subject_sx, subject_wl))
--方法二:
select name,split_part(subject,':',1) as subject
           ,split_part(subject,':',2) as result
  from(
select trans_array(1,';',name,subject) as (name,subject) 
  from(
select name
,concat('语文',':',subject_yw
   ,';','数学',':',subject_sx
   ,';','物理',':',subject_wl) as subject
  from tb)tt)tx;

这个例子,为了与通用方式产出一致。用到了 trans_array() 函数,split_part()函数,为了构造结构,还用concat拼接了字符串。

上面这两个针对maxcompute的例子,实际上看上去并不会比通用方法效率高,只是提供了一种思路。大家实际使用中有类似的结构,可以参考借鉴。

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
缓存 分布式计算 大数据
MaxCompute产品使用合集之行转列的函数如何与group by和聚合函数一起使用
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
SQL 分布式计算 MaxCompute
MaxCompute SQL-列转行和行转列
1. 假设我们在MaxCompute中有两张表,其中一张表是存用户基本信息,另一张表是存用户的地址信息等,表数据假设如下: user_basic_info: id name 1 a 2 b 3 c
13967 0
|
7月前
|
机器学习/深度学习 传感器 分布式计算
数据才是真救命的:聊聊如何用大数据提升灾难预警的精准度
数据才是真救命的:聊聊如何用大数据提升灾难预警的精准度
481 14
|
9月前
|
数据采集 分布式计算 DataWorks
ODPS在某公共数据项目上的实践
本项目基于公共数据定义及ODPS与DataWorks技术,构建一体化智能化数据平台,涵盖数据目录、归集、治理、共享与开放六大目标。通过十大子系统实现全流程管理,强化数据安全与流通,提升业务效率与决策能力,助力数字化改革。
314 4
|
9月前
|
分布式计算 DataWorks 数据处理
在数据浪潮中前行:记录一次我与ODPS的实践、思考与展望
本文详细介绍了在 AI 时代背景下,如何利用阿里云 ODPS 平台(尤其是 MaxCompute)进行分布式多模态数据处理的实践过程。内容涵盖技术架构解析、完整操作流程、实际部署步骤以及未来发展方向,同时结合 CSDN 博文深入探讨了多模态数据处理的技术挑战与创新路径,为企业提供高效、低成本的大规模数据处理方案。
423 3
|
9月前
|
SQL 人工智能 分布式计算
ODPS:数据浪潮中的成长与突围
本文讲述了作者在大数据浪潮中,通过引入阿里云ODPS体系(包括MaxCompute、DataWorks、Hologres)解决数据处理瓶颈、实现业务突破与个人成长的故事。从被海量数据困扰到构建“离线+实时”数据架构,ODPS不仅提升了数据处理效率,更推动了技术能力与业务影响力的双重跃迁。
|
8月前
|
机器学习/深度学习 运维 监控
运维不怕事多,就怕没数据——用大数据喂饱你的运维策略
运维不怕事多,就怕没数据——用大数据喂饱你的运维策略
591 0
|
7月前
|
传感器 人工智能 监控
数据下田,庄稼不“瞎种”——聊聊大数据如何帮农业提效
数据下田,庄稼不“瞎种”——聊聊大数据如何帮农业提效
235 14
|
7月前
|
机器学习/深度学习 传感器 监控
吃得安心靠数据?聊聊用大数据盯紧咱们的餐桌安全
吃得安心靠数据?聊聊用大数据盯紧咱们的餐桌安全
227 1
|
6月前
|
传感器 人工智能 监控
拔俗多模态跨尺度大数据AI分析平台:让复杂数据“开口说话”的智能引擎
在数字化时代,多模态跨尺度大数据AI分析平台应运而生,打破数据孤岛,融合图像、文本、视频等多源信息,贯通微观与宏观尺度,实现智能诊断、预测与决策,广泛应用于医疗、制造、金融等领域,推动AI从“看懂”到“会思考”的跃迁。
494 0

热门文章

最新文章

相关产品

  • 云原生大数据计算服务 MaxCompute