sql查询

vbkedwbf  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(349)

需要关于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或方解石中工作?

x8goxv8g

x8goxv8g1#

在标准sql中,别名只能在order by子句中使用,但teradata允许在任何地方使用它。必须用原始计算替换别名:

select EMPNO, sum(deptno) as sum_dept, 
   case when sum(deptno) > 10 then 1 else 0 end as tmp 
from emps 
group by EMPNO;

相关问题