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
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