Hive - 获取表的列名

时间:2017-03-04 19:48:51

标签: hive hql

如何使用HQL获取配置单列计数名称?我知道我们可以使用describe.tablename来获取列的名称。我们如何计算?

1 个答案:

答案 0 :(得分: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
;
  

5

一些额外的游戏:

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;