2017-03-04 46 views
1

如何使用HQL獲取配置單元列計數名稱?我知道我們可以使用describe.tablename來獲取列的名稱。我們如何獲得計數?配置單元 - 獲取表格的列名稱數

+0

的[蜂巢可能的複製,我該怎麼辦檢索所有數據庫的表列](http://stackoverflow.com/questions/29239565/hive-how-do-i-retrieve-all-the-databases-tables-columns) –

+0

@GordonLinoff - definitly不同的問題 –

回答

0
create table mytable(i int,str string,dt date, ai array<int>,strct struct<k:int,j:int>); 

select count(*) 
from (select transform ('') 
       using 'hive -e "desc mytable"' 
       as col_name,data_type,comment 
     ) t 
; 

一些額外的玩耍:

create table mytable (id int,first_name string,last_name string); 
insert into mytable values (1,'Dudu',null); 

select size(array(*)) from mytable limit 1; 

這不是防彈的,因爲並非所有列類型的組合都可以組合成一個數組。
它還要求表格至少包含1行。


這裏是一個更復雜也更強大的解決方案(類型也一樣),而且還要求該表將包含至少1排

select size(str_to_map(val)) from (select transform (struct(*)) using 'sed -r "s/.(.*)./\1/' as val from mytable) t; 
+0

我稍後將對其進行編輯以支持分區。我也可以用STRUCT解決方案克服1行限制。 –