HiveQL: uso de resultados de consultas como variables
(1)
en Hive Me gustaría extraer dinámicamente información de una tabla, guardarla en una variable y usarla más. Considere el siguiente ejemplo, donde recupero el máximo de la columna var y quiero usarlo como condición en la consulta posterior.
set maximo=select max(var) from table;
select
*
from
table
where
var=${hiveconf:maximo}
No funciona, aunque
set maximo=select max(var) from table;
${hiveconf:maximo}
me muestra el resultado deseado.
Obra:
select ''${hiveconf:maximo}''
da
"select max(var) from table"
aunque.
Mejor
Hive sustituye las variables tal cual y no las ejecuta. Use el script de envoltura de shell para obtener el resultado en variable y páselo a su script de Hive.
maximo=$(hive -e "set hive.cli.print.header=false; select max(var) from table;")
hive -hiveconf "maximo"="$maximo" -f your_hive_script.hql
Y después de esto dentro de su script, puede usar
select ''${hiveconf:maximo}''