Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache calcite RelNode查询的一个节点,其中FROM子句本身有一个查询_Apache Calcite - Fatal编程技术网

Apache calcite RelNode查询的一个节点,其中FROM子句本身有一个查询

Apache calcite RelNode查询的一个节点,其中FROM子句本身有一个查询,apache-calcite,Apache Calcite,我希望从一个表中获得结果,在该表中我orderbycolumnid并且我不希望id出现在结果中。我可以通过以下查询实现这一点 SELECT COALESCE (col1, '**') FROM (select col1, id FROM myDataSet.myTable WHERE col4 = 'some filter' ORDER BY id); 现在,我想为上述查询创建一个RelNode。据我所知,在方解石中,执行表格扫描只有两种方法scan(stringtablename)和scan

我希望从一个表中获得结果,在该表中我
orderby
column
id
并且我不希望
id
出现在结果中。我可以通过以下查询实现这一点

SELECT COALESCE (col1, '**')
FROM (select col1, id FROM myDataSet.myTable WHERE col4 = 'some filter' ORDER BY id);
现在,我想为上述查询创建一个RelNode。据我所知,在方解石中,执行表格扫描只有两种方法
scan(stringtablename)
scan(Iterable tableName)
。有没有办法
扫描(RelNode)
?如何做到这一点?

查询

select col1, col2, col2 FROM myDataSet.myTable WHERE col4 = 'some filter' ORDER BY id
也应该给你想要的结果

如果您想更直接地表示您编写的查询,您可以在from子句中为查询构造一个
RelNode
,首先扫描
myDataSet.myTable
,添加过滤器和顺序。然后可以投影所需的特定列集。

查询

select col1, col2, col2 FROM myDataSet.myTable WHERE col4 = 'some filter' ORDER BY id
也应该给你想要的结果


如果您想更直接地表示您编写的查询,您可以在from子句中为查询构造一个
RelNode
,首先扫描
myDataSet.myTable
,添加过滤器和顺序。然后,您可以投影所需的特定列集。

只需创建一个内部子查询的RelNode并在其上创建另一个投影即可。像这样

builder.scan('myTable')
 .filter(builder.call(SqlStdOperator.EQUALS, builder.field(col4), builder.literal('some filter') )))
  .project(builder.field('col1'), builder.field('id'))
  .sort(builder.field('id'))
  .project(builder.call(SqlStdOperator.COALESCE(builder.field('col1'), builder.literal('**'))))
  .build()


只需创建一个内部子查询的RelNode并在其上创建另一个投影即可。像这样

builder.scan('myTable')
 .filter(builder.call(SqlStdOperator.EQUALS, builder.field(col4), builder.literal('some filter') )))
  .project(builder.field('col1'), builder.field('id'))
  .sort(builder.field('id'))
  .project(builder.call(SqlStdOperator.COALESCE(builder.field('col1'), builder.literal('**'))))
  .build()