开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

请问flink有行转列的函数吗?

请问flink有行转列的函数吗?就是把name | subject
Tom | math
Tom | chinese
Jerry| math
Jerry| english。转换成'Tom', 'math,chinese'
'Jerry', 'math,english'把下面的转成上面的形式,就是分组之后的字符串拼接,类似于 group_concat

展开
收起
三分钟热度的鱼 2023-08-08 11:02:56 414 0
2 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    在 Flink SQL 中,可以使用内置的聚合函数 GROUP_CONCAT 来实现行转列的功能,类似于 group_concat 函数。

    以下是一个示例查询,将输入数据按照姓名进行分组,并将每个分组中的科目使用逗号拼接成字符串:

    sql
    Copy
    SELECT name, GROUP_CONCAT(subject, ',') AS subjects
    FROM your_table
    GROUP BY name;
    在上述示例中,your_table 是包含姓名和科目的输入表或视图。通过 GROUP BY name 语句将数据按照姓名进行分组,并使用 GROUP_CONCAT(subject, ',') 将每个分组中的科目拼接成以逗号分隔的字符串。

    请注意,GROUP_CONCAT 函数还可以接受其他参数,例如指定排序、去重等。您可以根据具体需求查阅 Flink SQL 的文档,了解更多关于 GROUP_CONCAT 函数的用法和选项。

    2023-08-08 18:39:47
    赞同 展开评论 打赏
  • 参考:https://www.mail-archive.com/search?l=user-zh@flink.apache.org&q=subject:%22Flink+SQL+%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8%E7%B1%BB%E4%BC%BCMySQL%E7%9A%84group_concat%E5%87%BD%E6%95%B0%22&o=newest&f=1 SELECT name, LISTAGG(subject, ',')
    FROM StudentSubjects
    GROUP BY name; 此回答整理自钉群“实时计算Flink产品交流群”

    2023-08-08 12:10:58
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载