CREATE TABLE IF NOT EXISTS Table2
(
USER_ID BIGINT,
PURCHASED_ITEM ARRAY<STRUCT<PRODUCT_ID: BIGINT,TIMESTAMPS:STRING>>
) ROW FORMAT
DELIMITED FIELDS TERMINATED BY '-'
collection items terminated by ','
map keys terminated by ':'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION '/user/rj/output2';
以下は表2のデータです
1345653-110909316904:1341894546,221065796761:1341887508
この以下のクエリを使用して上記のデータを展開できます。上記のデータに対しては正常に機能します-
SELECT * FROM (select user_id, prod_and_ts.product_id as product_id,
prod_and_ts.timestamps as timestamps FROM table2 LATERAL VIEW
explode(purchased_item) exploded_table as prod_and_ts) prod_and_ts;
そして、このような出力が得られますが、これは問題ありません-
1345653 110909316904 1341894546
1345653 221065796761 1341887508
しかし、場合によっては、以下の表のようなデータがあり、複数のタイムスタンプが同じ product_id に対してシャープ記号で追加されています。
1345653-110909316904:1341894546#1341885695,221065796761:1341887508#1341885453
そして、HiveQLクエリを使用して上記のデータに対してこのような出力が必要です-
1345653 110909316904 1341894546
1345653 110909316904 1341885695
1345653 221065796761 1341887508
1345653 221065796761 1341885453
これはどういうわけかこれを行うことは可能ですか?
? 何か提案をいただければ幸いです。
PS私は数日前にこの質問をしますが、その場合、データは異なり、現在はデータがまったく異なるため、同様の出力が必要です.