hive - SQL/HIVE - 如何从水平输出查询到垂直输出?
问题描述
我有一个查询返回两行所需的信息
SELECT src_file_dt, a, b ,c FROM my_table WHERE src_file_dt IN ('1531675040', '1531675169');
它将返回:
src_file_dt | a | b | c
1531675040 | 2 | 6 | 9
1531675169 | 8 | 2 | 0
现在,我需要以下布局中的数据,我如何获得这样的输出:
fields | prev (1531675040) | curr (1531675169)
a | 2 | 8
b | 6 | 2
c | 9 | 0
解决方案
应该有更简单的方法来实现这一点。我已经使用explode
函数构建结果并分别为上一列和下一列选择数据:
select t1.keys, t1.vals as prev, t2.vals as next from (
SELECT explode(map('a', a, 'b', b, 'c',c)) as (keys, vals)
FROM my_table
WHERE src_file_dt = '1531675040'
) t1,
(
SELECT explode(map('a', a, 'b', b, 'c',c)) as (keys, vals)
FROM my_table
WHERE src_file_dt = '1531675169'
) t2
where t1.keys = t2.keys
;
推荐阅读
- javascript - 在 UI 上排序数据和渲染不使用反应钩子
- android - 如何在 json 反序列化期间从列表中删除某些元素?
- java - 使用签名链接的 S3 大文件上传
- docker - Windows 10 docker-compose 占用 100% 磁盘使用率
- powershell - PowerShell 将托管属性映射到已爬网属性
- cordova - 使用 Cordova CLI 3.6 安装 Cordova 最新版本?
- c# - 如何在 Xamrin Android 应用程序中使用 ASMX soap?
- matlab - 使用 radiomics 包的输入参数不足
- stream - 创建自定义标准输出流
- c# - Entity Framework Code First 对象类中字节数组属性的替代方案?