2017-11-21 4 views
0

かなり大きな数のキー、値(10-30)を持つテーブルにマップデータ型があります。私は鍵を爆発すると、値が、私は以下の取得:ハイブマップデータオブジェクトをロングフォーマットに分解する

SELECT id, key,value 
FROM tbl1 
lateral view explode(map_field) feature_cols 

結果:

id, key1, value1 
id, key2, value2 
id, key3, value3 

をしかし、私が見てみたい:

id, key1, key2, key3 
1, value1, valu2, value3 

は、生産のいずれかの任意のコマンドがあります私の望むフォーマット、または爆発した出力を私が望む長いフォーマットに変換するコマンドがありますか?

答えて

2

側面図を爆発させた後、列を横に転置する必要があります。以下のようなクエリを書くことができます。

Select 
id, 
Case when key=key1 then value1 as  key1, 
Case when key=key2 then value2 as key2, 
Case when key=key3 then value3 as key3 
From 

(map_field(爆発TBL1側面図からID、キー、値を選択する)feature_cols)TEMP

+0

おかげ。しかし、長いペアの数を考慮すると、コードを手動で入力するのは非常に長いプロセスになります。マトリックスを転置するような転置に使用できる関数はありますか? – Espanta

+1

@エスパンターいいえ、Hiveには代替実装のアプローチはありません。 このタスクは、Sparkで実行できます。 –

+0

悲しい....とにかく感謝! – Espanta

関連する問題