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;
如何使用 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;