背景:
作为现代化工作的一部分,我正在尝试将一个大的存储过程转换为HiveQL脚本。HiveQL脚本作为配置单元活动的一部分,无论何时从Azure数据工厂触发管道,都会在Azure HDInsight集群上运行。
我尝试转换的存储过程有很多使用'DECLARE‘语句声明的变量。例如:
DECLARE @Variable1 INT;这些变量中的值使用SELECT语句设置。例如:
SELECT @Variable1 = ColumnName1 FROM Table_Name;这些变量在整个存储过程中被引用,如下所示:
SELECT * FROM Some_Table where ColumeName < @Variable1以及许多不可能进行子查询的复杂场景。
我如何在HiveQL中做同样的事情?有没有办法在HiveQL脚本中声明、修改和使用变量?
发布于 2019-10-12 01:48:46
不幸的是,HiveQL不是过程语言。
您不能像这样使用变量。
HiveQL中的变量只是文本替换,它们不是计算出来的,而是按字面意思替换的。
使用一些外壳脚本或python等,或者尝试使用HPL/SQL
相关答案:https://stackoverflow.com/a/37821218/2700344和这个:https://stackoverflow.com/a/51492264/2700344 -阅读以更好地了解变量替换在hiveql中是如何工作的
https://stackoverflow.com/questions/58328872
复制相似问题