sql - Spark SQL 中的转置
问题描述
对于以下表结构:
+------------------------------------------------------+
| timestamp | value1 | value2 | ... value100 |
+------------------------------------------------------+
|1/1/1 00:00:00 | 1 | 2 | 100 |
+------------------------------------------------------+
如何使用 Spark SQL 语法将其转换为这样的结构?
+---------------------------------------+
| timestamp | id | value |
+---------------------------------------+
|1/1/1 00:00:00 | value1 | 1 |
|1/1/1 00:00:00 | value2 | 2 |
|1/1/1 00:00:00 | ... value100 | 100 |
+---------------------------------------+
在 Python 或 R 中,这相对简单,UNPIVOT
在这里似乎并不适用。
解决方案
您可以使用常规 SQL 执行相同操作,如下所示
select timestamp
,'value1' as id
,value1 as value
from table
union all
select timestamp
,'value2' as id
,value2 as value
from table
union all
select timestamp
,'value3' as id
,value3 as value
from table
推荐阅读
- r - R中带有情节的“轮廓”类型中使用的平滑方法是什么?
- excel - RefreshAll 宏在数据完成刷新之前保存/关闭。清零数据
- ansible - 如何在剧本中使用 ansible tower 登录凭据?
- scala - 在 RDD 上计算之前为每个 Spark 执行器指定初始化
- google-bigquery - BigQuery 通配符表 - 有什么限制?
- vue.js - VueJS 路由器不加载组件
- php - 在 Symfony 中更改 RabbitMQ 服务器
- python - 将矩阵转换为排名矩阵 Python
- java - 如何将此代码转换为 Racket/Scheme
- mysql - 错误:加载本地数据被禁用 - 这必须在客户端和服务器端都启用