我定义了一个 Vora 视图,它有一个关系表数据源。我在结果集中包含了两列,其中一列我分配了一个聚合函数。其数据预览按预期工作。
从逻辑上讲,我想添加一个“where”子句来仅在聚合值满足条件时过滤数据。为了使用聚合值执行此操作,我的理解是我需要定义一个“HAVING”子句。所以,这就是我所做的,但它导致以下异常:
org.apache.spark.SparkException:作业因阶段失败而中止:阶段 9147.0 中的任务 0 失败 1 次,最近一次失败:阶段 9147.0 中丢失任务 0.0(TID 246678,本地主机):sap.hanavora.jdbc.VoraException:HL (9):运行时错误。(sql_error:1:193-1:203: 错误: 未解析的参考 SELECT "__subquery1"."CHARGE_DEPARTMENT", AVG("__subquery1"."COST") AS "AVG_COST" FROM (SELECT "HC_SERVICE"."CHARGE_DEPARTMENT", " HC_SERVICE"."COST" FROM "HC_SERVICE") AS "__subquery1" WHERE ("AVG_COST" > 500.0) GROUP BY "__subquery1"."CHARGE_DEPARTMENT" LIMIT 1000 ^^^^^^^^^^) 在 sap.hanavora。 jdbc.driver.HLMessage.buildException(HLMessage.java:97) 在...
我使用 SQL 编辑器进行了相同的尝试,得到了相同的异常结果,这是查询:
select CHARGE_DEPARTMENT, avg(COST) as AVERAGE_COST
from HC_SERVICE
group by CHARGE_DEPARTMENT
having AVERAGE_COST > 500.00;
我还尝试将初始查询移动到子选择中,然后尝试将 having 子句应用于该结果集,但我最终得到了同样的错误。但我认为这没有必要,因为在这种情况下,Vora 引擎似乎(基于异常)已经在构建子查询。