如何根据汇总值过滤Vora表的查询结果?

时间:2017-06-15 16:55:00

标签: vora

我有一个定义的Vora视图,它有一个关系表数据源。我在结果集中包含了两列,其中一列我已经分配了一个聚合函数。这个数据预览按预期工作。

逻辑上,我想添加一个'where'子句,仅在聚合值满足条件时才过滤数据。为了用聚合值来做这件事,我的理解是我需要定义一个'HAVING'子句。所以,这就是我所做的,但它会导致以下异常:

  

org.apache.spark.SparkException:作业因阶段失败而中止:   阶段9147.0中的任务0失败1次,最近失败:丢失任务   阶段9147.0中的0.0(TID 246678,localhost):sap.hanavora.jdbc.VoraException:HL(9):运行时错误。   (sql_error:1:193-1:203:错误:未解析的引用SELECT   “__subquery1”。“CHARGE_DEPARTMENT”,AVG(“__ subquery1”。“COST”)AS   “AVG_COST”FROM(选择“HC_SERVICE”。“CHARGE_DEPARTMENT”,   “HC_SERVICE”。“COST”来自“HC_SERVICE”)AS“__subquery1”WHERE   (“AVG_COST”> 500.0)GROUP BY“__subquery1”。“CHARGE_DEPARTMENT”限制   1000 ^^^^^^^^^^)at   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引擎已经在这种情况下构建子查询。

2 个答案:

答案 0 :(得分:0)

您是否尝试在Vora Tools建模器中执行此操作?

如果您只是使用SQL,那么这应该可以为您提供所需的结果:

select CHARGE_DEPARTMENT, AVERAGE_COST from (
    select CHARGE_DEPARTMENT, avg(COST) as AVERAGE_COST
    from HC_SERVICE
    group by CHARGE_DEPARTMENT
    ) as subQuery
where subQuery.AVERAGE_COST > 500.00;

答案 1 :(得分:0)

HAVING错误“...未解决的引用...”是由于Vora中的错误。计划在下一个Vora 1.4补丁中修复。此问题没有解决方法。

Update 7/6/2017:此问题已在Vora 1.4补丁2中修复(自2017年7月3日起可用)