gpt4 book ai didi

hadoop - apache calcite 和 teradata 中的 SQL 查询

转载 作者:可可西里 更新时间:2023-11-01 14:46:23 25 4
gpt4 key购买 nike

需要有关 apache 方解石的建议。我们在 Teradata 上运行了一些 SQL 查询。现在我们想在 Hadoop/Spark 上运行这些 sql 查询(可能使用 Apache 方解石)。

我们在 Spark SQL (2.6.3) 和 Apache calcite 中尝试了这些 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 和 Calcite 中同样行不通。抛出以下错误:

Error while executing SQL "select EMPNO, sum(deptno) as sum_dept, case when sum_dept > 10 then 1 else 0 end as tmp from emps group by EMPNO": From line 1, column 50 to line 1, column 57: Column 'SUM_DEPT' not found in any table (state=,code=0)

有没有人(SparkSQL/Calcite 专家)知道是否有办法让它在 sparkSQL 或 calcite 中工作?

最佳答案

在标准 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;

关于hadoop - apache calcite 和 teradata 中的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48464115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com