首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在flink sql中将多集数据类型转换为字符串?

如何在flink sql中将多集数据类型转换为字符串?
EN

Stack Overflow用户
提问于 2021-10-20 03:40:20
回答 2查看 169关注 0票数 1

当我在flink sql中执行这样的查询时:

代码语言:javascript
运行
复制
    SELECT COLLECT(col1) OVER (
        PARTITION BY col2
        ORDER BY col3
        ROWS BETWEEN 1 PRECEDING AND CURRENT ROW
    ) AS col4
    FROM table 

如何将多集数据类型的col4转换为字符串?

我试过cast(col4 as string),但它不起作用。Cast function cannot convert value of type BIGINT MULTISET to type VARCHAR(2147483647)是个例外

或者,如何将多集数据传递给java udf,然后转换为字符串?如何编写这样的udf?

EN

回答 2

Stack Overflow用户

发布于 2021-10-20 07:32:37

目前,多集的强制转换是有限的。这个社区是improving this上的currently working

在此之前,我建议使用标量函数。UDF可以接受所有类型。因为自动反射逻辑为映射类型保留了Map类。您必须添加类型提示。

代码语言:javascript
运行
复制
public class MultisetToString extends ScalarFunction {

  public String eval(@DataTypeHint("MULTISET<STRING>") Map<String, Integer> multiset) {
    return multiset.toString();
  }
}
票数 2
EN

Stack Overflow用户

发布于 2021-10-20 13:56:00

还有另一个正在积极开发的open issue,它不仅支持打印,而且还将所有结构化类型转换为字符串

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69640052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档