hadoop - 如何在 Hive 中透视数据

标签 hadoop pivot hive hiveql

如何在 HiveQL 中实现 PIVOT 功能。以下是 SQL 查询,请帮助我在 Hive 中实现它:

 CREATE TABLE Product(Cust VARCHAR(25), Product VARCHAR(20), QTY INT)
 GO
 -- Inserting Data into Table
 INSERT INTO Product(Cust, Product, QTY) VALUES('KATE','VEG',2)
 INSERT INTO Product(Cust, Product, QTY) VALUES('KATE','SODA',6)
 INSERT INTO Product(Cust, Product, QTY) VALUES('KATE','MILK',1)
 INSERT INTO Product(Cust, Product, QTY) VALUES('KATE','BEER',12)
 INSERT INTO Product(Cust, Product, QTY) VALUES('FRED','MILK',3)
 INSERT INTO Product(Cust, Product, QTY) VALUES('FRED','BEER',24)
 INSERT INTO Product(Cust, Product, QTY) VALUES('KATE','VEG',3)
 GO

 -- Pivot Table ordered by PRODUCT
 SELECT PRODUCT, FRED, KATE FROM (
 SELECT CUST, PRODUCT, QTY
 FROM Product) up
 PIVOT (SUM(QTY) FOR CUST IN (FRED, KATE)) AS pvt
 ORDER BY PRODUCT

--期望的输出: 客户产品数量 凯特蔬菜 2 凯特苏打水 6 凯特牛奶 1 凯特啤酒 12 弗雷德牛奶 3 弗莱德啤酒 24 凯特蔬菜 3

最佳答案

Hive 不支持以这种方式旋转。如果有少量的值要对结果进行透视,则可以在查询中使用“if”或“case”语句来完成。这种方法不适用于无限或未知的产品或客户集。

有一个Jira issue请求 PIVOT 支持。

关于hadoop - 如何在 Hive 中透视数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15657145/

相关文章:

hadoop - 将数据从一个 hbase 表复制到另一个

hadoop - 错误:使用Tableau在Cloudera上查询Impala时,表达式不在Group BY键中

hadoop - reducer 配置单元数和计数(不同)

hadoop - 在 Sqoop 中更改事务隔离级别设置行为

mysql - 根据条件将行转为列

hadoop - 如何使用 Hive 检查 Druid 数据源

hadoop - 增加 Hive 中唯一键的列值

java - 无法在集群上使用 java 类调用 spark 应用程序

MySQL 将行转为动态数量的列

mysql - 查看SQL数据表