2017-06-21 66 views
0

鍵值我有一個蜂巢表,它的模式是如下的colmap類型:改變一個在蜂巢表的映射表列通過HQL

select 
    col 
from table 

col 
{"name":"abc", "value":"val_1"} 

我需要做的是改變val_1val_2並從中創建另一個表。

create table table_2 as 
select 
    col -- TODO: need to do something here 
from table 

有什麼建議嗎?謝謝!

+0

什麼是'col'的數據類型? –

+0

它是一個'map'類型。 @DuduMarkovitz – KAs

回答

1
with t as (select map("name","abc","value","val_1") as col) 
select map("name",col["name"],"value","val_2") as col 
from t 

+--------------------------------+ 
|    col    | 
+--------------------------------+ 
| {"name":"abc","value":"val_2"} | 
+--------------------------------+ 
+0

由於這只是一個示例問題,因此真正的''col'中會有動態的鍵值對(肯定至少存在鍵'value',關鍵'name'和其他動態鍵都是動態的),是否有任何通用的方法來實現?謝啦! – KAs

+0

賈森,有一種方法(做到了這一點),但它是醜陋的,並有一定的侷限性。我會爲該編寫一個UDF –

+0

謝謝你,我已經試過編寫一個scala函數並將其註冊到UDF。乾杯:) – KAs