hive table name 是否支持通配符?

Does hive table name support wildcard?

hive 中有一些表,具有相同的模式,如下所示:product_info_{xxx}_manual 我想获取这些表的最小和最大日期时间,现在我使用 sql 如下所示

select 'foo', min(dt), max(dt) from product_info_foo_manual
union
select 'bar', min(dt), max(dt) from product_info_bar_manual
union
select 'foobar', min(dt), max(dt) from product_info_foobar_manual
...

hive支持吗wildcard可以更容易的实现上面的需求,例如

select substring(table_name, x,y),min(dt), max(dt) from product_info_*_manual

不,SELECT 语句不支持 table 名称中的通配符。 show tables 支持通配符,因此您可以执行 SHOW TABLES,在 shell 中获取结果并遍历它并参数化您的 select 查询。

例如像这样:

#!/bin/bash
for table_name in $(hive -e "use mydb; show tables 'product_info_*_manual';") 
do
   hive -S -e "use $db; select substring(${table_name}, x,y),min(dt), max(dt) from ${table_name};"
done