SQL 在 apache calcite 和 teradata 中查询
SQL query in apache calcite and teradata
需要有关 Apache 方解石的建议。我们在 Teradata 上有一些 SQL 查询 运行ning。现在我们想在 Hadoop/Spark 上 运行 这些 sql 查询(原样),也许使用 Apache 方解石。
我们在 Spark SQL (2.6.3) 和 Apache calcite 中尝试了这些 SQL 查询(原样)——但很少有查询不 运行。问题是,如果我们定义一个派生变量 (AS) 并尝试在同一级别的同一查询中使用它,它在 SparkSQL 和方解石中不起作用,但在 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;
需要有关 Apache 方解石的建议。我们在 Teradata 上有一些 SQL 查询 运行ning。现在我们想在 Hadoop/Spark 上 运行 这些 sql 查询(原样),也许使用 Apache 方解石。
我们在 Spark SQL (2.6.3) 和 Apache calcite 中尝试了这些 SQL 查询(原样)——但很少有查询不 运行。问题是,如果我们定义一个派生变量 (AS) 并尝试在同一级别的同一查询中使用它,它在 SparkSQL 和方解石中不起作用,但在 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;