具有不等式相关谓词的不受支持的聚合子查询

问题描述

我是Impala的新手-当我们如下联接两个表时,我们收到以下错误消息。 Impala不支持相关子查询> = -关于如何实现的任何建议

CREATE TABLE database.test_dve (
  campo1 INT,campo2 TIMESTAMP,campo3 INT
)
STORED AS PARQUET;

insert into database.test_dve values(1,'2019-09-30',1);
insert into database.test_dve values(2,1);
insert into database.test_dve values(3,1);

CREATE TABLE database.test_dve2 (
  campo1 INT,campo2 TIMESTAMP
)
STORED AS PARQUET;

insert into database.test_dve2 values(1,'2019-10-30');

select *
from database.test_dve a
WHERE 0 >= (SELECT count(*) FROM database.test_dve2 b
WHERE a.campo1 = b.campo1
AND CAST(from_timestamp(a.campo2,'yyyyMM') as INT) >= CAST(from_timestamp(b.campo2,'yyyyMM') as INT)
);

错误消息

[HY000] [Cloudera] [ImpalaODBC](110)在Impala中执行查询时出错:[HY000]:AnalysisException:具有不等于相关谓词的不受支持的聚合子查询:CAST(from_timestamp(a.campo2,'yyyyMM' )AS INT)> = CAST(from_timestamp(b.campo2,'yyyyMM')AS INT)

谢谢

解决方法

尝试将其替换为not exists

select *
from database.test_dve a
WHERE NOT EXISTS (SELECT 1
                  FROM database.test_dve2 b
                  WHERE a.campo1 = b.campo1 AND
                        CAST(from_timestamp(a.campo2,'yyyyMM') as INT) >= CAST(from_timestamp(b.campo2,'yyyyMM') as INT)
                 );

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...