本文主要是介绍Flink SQL因类型错误导致MAX和MIN计算错误,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
背景
最近在做数据分析,用Flink SQL来做分析工具,因数据源的数据存在不太规范的数据格式,因此我需要通过SQL函数把我需要的数据值从VARCHAR类型的字段中把数据提取出来,然后再做MAX、MIN、SUM这些统计。怎料SUM算出来的结果准确无误,而MAX和MIN算出来的结果却始终不正确,最后发现原来是我用SQL函数提取VARCHAR类型的字段的数据,也是VARCHAR类型,所以导致MAX、MIN结果不正确,后面转成DOUBLE类型之后结果正确。
示例
源数据
user_id | user_name | integral |
1 | 张一 | 100,150 |
2 | 张二 | 100,150 |
3 | 张三 | 50,30 |
4 | 张四 | 20,50 |
假设源数据有这一张表,字段分别表示用户ID、用户名和积分,积分字段是使用逗号分隔的两个内容值,第一个是普通积分,第二个是VIP积分,需要分析所有用户中最小的普通积分和最大的VIP积分。
分析SQL
错误的SQL
......--SPLIT_INDEX(`integral`,',',0) 返回的是一个VARCHAR,所以这里计算的结果为50
SELECT MAX(SPLIT_INDEX(`integral
这篇关于Flink SQL因类型错误导致MAX和MIN计算错误的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!