背景:
作为现代化工作的一部分,我正在尝试将大型存储过程转换为HiveQL脚本。每当从Azure Data Factory触发管道时,作为Hive活动的一部分的HiveQL脚本就在Azure HDInsight群集上运行。
我正在尝试转换的存储过程具有许多使用'DECLARE'语句声明的变量。例如:
DECLARE @Variable1 INT;
这些变量中的值是使用SELECT语句设置的。例如:
SELECT @Variable1 = ColumnName1 FROM Table_Name;
并且这些变量在整个存储过程中都是这样引用的:
SELECT * FROM Some_Table where ColumeName < @Variable1
以及许多无法进行子查询的复杂方案。
我如何在HiveQL中执行相同的操作?是否可以在HiveQL脚本中声明,修改和使用变量?
HiveQL
不幸不是过程语言。
您不能使用这样的变量。
HiveQL
中的变量只是文本替换,它们没有被计算,而是按字面意义被替换。
使用一些shell脚本或python等,或尝试HPL/SQL
[相关答案:https://stackoverflow.com/a/37821218/2700344和这个:https://stackoverflow.com/a/51492264/2700344-请阅读以更好地理解hiveql中变量替换的工作原理