に行(UNPIVOT)に列を変換する:は、私がこのような構造を持つテーブルがあるhiveql
column1, column2, column3, X1, X2, X3, X4
A1, A2, A3, 5, 6, 1, 4
私はすでにこれを行うことができた
column1, column2, column3, Key, Value
A1, A2, A3, X1, 5
A1, A2, A3, X2, 6
A1, A2, A3, X3, 1
A1, A2, A3, X4 4
にこれを変換したいです"UNION ALL"と一緒にステッチされた4つのクエリを使用していますが、テーブルが巨大で、各選択が長いマップリダクションに変換されるため、UNIONを使用すると理想的にはN回かかることになります。 Nはピボットする列の数です。
私はexplode()定義済みのUDTFを調べようとしましたが、私はこの例では使用できません。私は次のようなものを試しましたが、構文を働かせることはできません。
select column1, column2, column3, explode(Map('X1':X1, 'X2':X2, ..))
誰かがこの作業を行う方法を正確に指摘できますか?私は私自身のUDTFを巻くことができると推測していますが、これがかなり標準的なものであることを望んでいますか?
EDIT: あり類似した何かを頼まれたのstackoverflowにanother questionですが、製剤が複雑で、私の意見で間違った答えが、現在正解としてマークされています。私はこの質問がもっとサクシンントであり、その要点だと思う。
[ハイブ - ハイブのアンピボット機能]の可能な重複(http://stackoverflow.com/questions/32621970/hive-unpivot-functionality-in-hive) – gobrewers14