背景:
作为现代化工作的一部分,我正在尝试将大型存储过程转换为 HiveQL 脚本。HiveQL 脚本作为 Hive 活动的一部分,每当从 Azure 数据工厂触发管道时,都会在 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 中的工作原理