需要关于Apache方解石的建议。我们在teradata上运行了一些sql查询。现在我们想在hadoop/spark上运行这些sql查询(实际上),可能使用apachecalcite。
我们在sparksql(2.6.3)和apachecalcite中尝试了这些sql查询,但很少有查询不运行。问题是,如果我们定义一个派生变量(as)并尝试在同一级别的同一查询中使用它,它在sparksql和calcite中不起作用,但在teradata中起作用。查询示例:
select EMPNO, sum(deptno) as sum_dept,
case when sum_dept > 10 then 1 else 0 end as tmp
from emps
group by EMPNO; => WORKS in Teradata
但在sparksql和方解石中却不起作用。引发以下错误:
执行sql“select empno,sum(deptno)as sum\u dept,case when sum\u dept>10 then 1 else 0 end as tmp from emps group by empno”时出错:从第1行第50列到第1行第57列:在任何表中都找不到列“sum\u dept”(状态=,代码=0)
有人(sparksql/方解石Maven)知道有没有办法让它在sparksql或方解石中工作?
1条答案
按热度按时间x8goxv8g1#
在标准sql中,别名只能在order by子句中使用,但teradata允许在任何地方使用它。必须用原始计算替换别名: