好嘞~那我直接粘一下 1. FlinkSQL代码 CREATE TEMPORARY VIEW IF NOT EXISTS rt_view AS SELECT user_id , run_duration_3km_prediction , run_duration_5km_prediction , run_duration_10km_prediction , run_duration_21km_prediction , run_duration_42km_prediction , LEAST(run_duration_3km_prediction/ 3, run_duration_5km_prediction/ 5, run_duration_10km_prediction / 10, run_duration_21km_prediction / 21 , run_duration_42km_prediction / 42.195) AS lactate_threshold_pace -- 取最小值 , update_time FROM ( SELECT user_id AS user_idAS model_version , json_value(vo2max, '$.vo2max' RETURNING DOUBLE) AS vo2max , IF(COALESCE(json_value(vo2max, '$.vo2max' RETURNING DOUBLE), 0) <= 0, 0, ROUND(POWER(json_value(vo2max, '$.vo2max' RETURNING DOUBLE) / 16, 1 / -1.149), 2)) AS run_duration_3km_prediction , IF(COALESCE(json_value(vo2max, '$.vo2max' RETURNING DOUBLE), 0) <= 0, 0, ROUND(POWER(json_value(vo2max, '$.vo2max' RETURNING DOUBLE) / 47, 1 / -1.164), 2)) AS run_duration_5km_prediction , IF(COALESCE(json_value(vo2max, '$.vo2max' RETURNING DOUBLE), 0) <= 0, 0, ROUND(POWER(json_value(vo2max, '$.vo2max' RETURNING DOUBLE) / 37, 1 / -1.161), 2)) AS run_duration_10km_prediction , IF(COALESCE(json_value(vo2max, '$.vo2max' RETURNING DOUBLE), 0) <= 0, 0, ROUND(POWER(json_value(vo2max, '$.vo2max' RETURNING DOUBLE) / 17, 1 / -1.16), 2)) AS run_duration_21km_prediction , IF(COALESCE(json_value(vo2max, '$.vo2max' RETURNING DOUBLE), 0) <= 0, 0, ROUND(POWER(json_value(vo2max, '$.vo2max' RETURNING DOUBLE) / 45, 1 / -1.237), 2)) AS run_duration_42km_prediction , update_time FROM tmp_view ) AS t ;
2. 返回数据结果 user_id (STRING): 5d01d8dba2d5fc2928da97d0 model_version (STRING): 101 vo2max (DOUBLE): 48.94047164916992 run_duration_3km_prediction (DOUBLE): 703.25 run_duration_5km_prediction (DOUBLE): 1215.02 run_duration_10km_prediction (DOUBLE): 2524.36 run_duration_21km_prediction (DOUBLE): 5534.96 run_duration_42km_prediction (DOUBLE): 11550.15 lactate_threshold_pace (DOUBLE): 0.0 在 2023-08-21 11:27:04,"guozhi mang" <rookiegao...@gmail.com> 写道: >邮件里无法加载图片 > >guifeng huang <hgf_...@163.com> 于2023年8月21日周一 11:08写道: > >> >> 因为是在流里, 我不太清楚如何给您复现的用例比较合适, 因为把数据单独拿出来, 返回结果又是正常的... >> 以下我把我的FlinkSQL代码和输出结果贴图一下(您看下是否OK) >> *FlinkSQL代码* >> 视图tmp_view是我从日志里过滤的数据, 整体业务逻辑比较简单就是lactate_threshold_pace这个是从下面5个指标里取一个最小值 >> ( >> run_duration_3km_prediction,run_duration_5km_prediction,run_duration_10km_prediction,run_duration_21km_prediction,run_duration_42km_prediction) >> 实际5个指标都是大于0, 但是最后函数结果是0 >> >> *输出结果* >> >> >> >> 在 2023-08-21 10:36:33,"Jiabao Sun" <jiabao....@xtransfer.cn.INVALID> 写道: >> >Hi, >> > >> >方便提供一下复现的用例吗? >> > >> >Best, >> >Jiabao >> > >> > >> >On 2023/08/21 02:19:53 guifeng huang wrote: >> >> (Flink1.15版本) >> >> 咨询求助: Least函数输入参数(Double类型)正常, 在Flink shell里测试函数无问题, 结果符合预期. >> >> 但是实际生产流里进行使用的时候发现返回结果有异, 以下是3种case >> >> - 返回结果正确, 符合预期 >> >> - 返回0, 不符合预期, 未知原因 >> >> - 返回结果和理论正确值有微小的gap, 找了几个case都是1位数值里的差距. >> >> 看看有没有其他的老师遇到过同样的问题 >> >> > >-- >Best regards