3

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

-- 必要な出力: 顧客製品 数量 KATE VEG 2 KATE SODA 6 KATE MILK 1 KATE BEER 12 FRED MILK 3 FRED BEER 24 KATE VEG 3

4

2 に答える 2

-2

本当に必要なのは、以下のように、最初にコンテンツをコンマ (またはその他の選択肢) としてテキスト ファイルに保存することです。

ケイト、野菜、2 ケイト、ソーダ、6 ケイト、牛乳、1 ケイト、ビール、12 フレッド、牛乳、3 フレッド、ビール、24 ケイト、野菜、3

その後、Hive シェルで次のようにテーブルを作成します。

create table Products(Cust string, Product string, Qty int) row format \ 
delimited fields terminated by ',' lines terminated by '\n';

その後 (ファイルが /user/avkash/prodlist.txt としてローカルに保存されていると仮定すると、次のようにデータをテーブルにロードできます。

load data inpath '/user/avkash/prodlist.txt' overwrite into table Products;

次のようにテーブルとレコードを確認します。

describe Products;
select * from Products;

その後、目的を達成するために、Hive シェルで他のハイブ クエリを実行できます。

于 2013-03-27T21:38:11.130 に答える