我正在寻找Apache Hive中的条件结构,如下面的Java代码:
if (condition) value
elseif (condition) value
...
else value
有没有办法在HiveQL中执行此操作?
答案 0 :(得分:1)
您可以在HIVE中使用案例陈述
CASE声明
case语句的语法是:
CASE [ expression ]
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
WHEN conditionn THEN resultn
ELSE result
END
此处表达式是可选的。它是您与条件列表进行比较的值。 (即:condition1,condition2,... conditionn)。
所有条件必须具有相同的数据类型。条件按列出的顺序评估。一旦发现条件为真,case语句将返回结果,而不再评估条件。
所有结果必须具有相同的数据类型。一旦发现条件为真,这就是返回的值。
如果没有发现条件为真,那么case语句将返回ELSE子句中的值。如果省略ELSE子句并且没有发现条件为真,那么case语句将返回NULL
示例:
CASE Fruit
WHEN 'APPLE' THEN 'The owner is APPLE'
WHEN 'ORANGE' THEN 'The owner is ORANGE'
ELSE 'It is another Fruit'
END
另一种形式的CASE是
CASE
WHEN Fruit = 'APPLE' THEN 'The owner is APPLE'
WHEN Fruit = 'ORANGE' THEN 'The owner is ORANGE'
ELSE 'It is another Fruit'
END