如何使用HQL获取配置单列计数名称?我知道我们可以使用describe.tablename来获取列的名称。我们如何计算?
答案 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;