我需要在带有分区的配置单元查询中使用“!=”符号。我尝试了类似的东西
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
但它在“!=”符号处显示错误。我该如何替换!=
我需要在带有分区的配置单元查询中使用“!=”符号。我尝试了类似的东西
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
但它在“!=”符号处显示错误。我该如何替换!=
尝试在 hive 中使用rlike/regex函数来指定条件。
我认为您也可以使用 not 运算符<>
not!=
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=10
和select * where act=20
查询的一些数据。
我可以知道你的蜂巢版本吗?尝试使用 A <> B
Hive DOCS 的描述:如果 A 或 B 为 NULL,则为 NULL,如果表达式 A 不等于表达式 B,则为 TRUE,否则为 FALSE。