请问flink有行转列的函数吗?就是把name | subject
Tom | math
Tom | chinese
Jerry| math
Jerry| english。转换成'Tom', 'math,chinese'
'Jerry', 'math,english'把下面的转成上面的形式,就是分组之后的字符串拼接,类似于 group_concat
在 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 函数的用法和选项。
参考: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产品交流群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。