【问题标题】:How to achive STRING_AGG in RelNode?如何在 RelNode 中实现 STRING_AGG?
【发布时间】:2021-01-03 06:34:18
【问题描述】:

我有一个查询,我想用分隔符, 连接所有行。我可以使用STRING_AGG 在 sql 中轻松实现这一点。如何为以下查询创建一个 relNode ?

SELECT STRING_AGG(CONCAT(col1, col2, col3), ',')
FROM table;

有没有一个SqlStdOperator 可以做到这一点?

如果不是,builder.call(..., RexNode... rexNodes) 中的 SqlStdOperator(s) 的哪些组合可用于实现此目的?

【问题讨论】:

    标签: sql apache-calcite


    【解决方案1】:

    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()
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-26
      • 2020-05-19
      • 1970-01-01
      • 1970-01-01
      • 2019-09-16
      • 2021-12-26
      • 2016-08-11
      • 1970-01-01
      相关资源
      最近更新 更多