在配置单元查询中使用不等号

时间:2013-02-19 10:24:36

标签: hive

我需要在分区的hive查询中使用'!='符号。 我试过像

这样的东西
from sample_table
insert overwrite table sample1
partition (src='a')
select * where act=10
insert overwrite table sample1
partition (src!='a')
select * where act=20

但它在'!='符号显示错误。我该如何更换!=

3 个答案:

答案 0 :(得分:9)

尝试在配置单元中使用rlike/regex函数来指定条件。

我认为您也可以使用not operator <>而不是!=

答案 1 :(得分:2)

partition (src!='a') - 您希望Hive做什么 - 将“select *”结果写入任何分区而不是“a”?您看,partition (src='a')表示您正在将select语句的结果写入名为“a”的表的分区中。 “PARTITION(a = b)”不是像“WHERE a = b”这样的条件命令,您只是指定如何命名分区。 您只需指定另一个分区名称,因此查询应如下所示:

from sample_table insert overwrite table sample1 partition (src='a') select * where act=10 insert overwrite table sample1 partition (src='b') select * where act=20;

之后,您应该会在表格“sample1”中看到2个新分区“a”和“b”,其中包含来自这些select * where act=10select * where act=20查询的一些数据。

答案 2 :(得分:0)

我可能知道您的蜂巢版本吗? 尝试使用A&lt;&gt;乙

Hive DOCS的描述: 如果A或B为NULL,则为NULL;如果表达式A不等于表达式B,则为TRUE,否则为FALSE。