Hive - 获取 table 的列名计数

Hive - getting the column names count of a table

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

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;

这不是万无一失的,因为并非所有列类型的组合都可以组合成一个数组。
它还要求 table 至少包含 1 行。


这是一个更复杂但也更强大的解决方案(类型相反),但也要求 table 至少包含 1 行

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