如何在RelNode中实现STRING_AGG?
How to achive STRING_AGG in RelNode?
我有一个查询,我想用分隔符 ,
连接所有行。我可以使用 STRING_AGG
在 sql 中轻松实现此目的。如何为以下查询创建 relNode?
SELECT STRING_AGG(CONCAT(col1, col2, col3), ',')
FROM table;
是否有一个 SqlStdOperator
可以做到这一点?
如果不是,builder.call(..., RexNode... rexNodes)
中的 SqlStdOperator
(s) 的哪些组合可用于实现此目的?
STRING_AGG 等价于 SqlStdOperator.LISTAGG
builder
.scan("table")
.project(
builder.call(SqlStdOperatorTable.LISTAGG,
builder.call(SqlStdOperatorTable.CONCAT,
builder.field("col1"),
builder.call(SqlStdOperatorTable.CONCAT,
builder.field("col2"),
builder.field("col3")
)
),
builder.literal(",")
)
)
.build()
我有一个查询,我想用分隔符 ,
连接所有行。我可以使用 STRING_AGG
在 sql 中轻松实现此目的。如何为以下查询创建 relNode?
SELECT STRING_AGG(CONCAT(col1, col2, col3), ',')
FROM table;
是否有一个 SqlStdOperator
可以做到这一点?
如果不是,builder.call(..., RexNode... rexNodes)
中的 SqlStdOperator
(s) 的哪些组合可用于实现此目的?
STRING_AGG 等价于 SqlStdOperator.LISTAGG
builder
.scan("table")
.project(
builder.call(SqlStdOperatorTable.LISTAGG,
builder.call(SqlStdOperatorTable.CONCAT,
builder.field("col1"),
builder.call(SqlStdOperatorTable.CONCAT,
builder.field("col2"),
builder.field("col3")
)
),
builder.literal(",")
)
)
.build()