如何解决其中FROM子句本身具有查询的查询的RelNode
我想从我的ORDER BY
列id
的表中获得结果,并且我不希望在结果中出现id
。我可以使用以下查询来实现。
SELECT COALESCE (col1,'**')
FROM (select col1,id FROM myDataSet.myTable WHERE col4 = 'some filter' ORDER BY id);
现在,我想创建上述查询的RelNode。据我所知,方解石中要执行表扫描,只有两种方法scan(String tableName)
和scan(Iterable<String> tableNames)
。有没有办法scan(RelNode )
?该怎么做?
解决方法
查询
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()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。