Databricks FLOOR()函数带Target Scale参数报错求助
Databricks FLOOR()函数多参数报错问题解析
问题现象:
在AWS Databricks Runtime 10.4 LTS(基于Apache Spark 3.2.1)环境中,单参数FLOOR()可正常运行:select floor(3345.1) --> 返回3345但调用带第二个目标精度参数的版本时触发报错:
select floor(3345.1, -2) --> 报错:*Invalid number of arguments for function floor. Expected: 1; Found: 2*升级至Runtime 11.3后该功能恢复正常,可预期返回3300。
问题原因:
这并非bug,而是版本特性差异导致的。Apache Spark 3.2.x版本的FLOOR()仅支持单参数,带目标精度的多参数重载是在Spark 3.3版本中才新增的特性。Databricks Runtime 11.x基于Spark 3.3,因此支持该功能;而10.4 LTS基于Spark 3.2.1,天然不具备这个重载逻辑,官方文档可能未明确标注版本兼容性,从而造成误解。其他用户反馈:
不少使用Spark 3.2或对应低版本Databricks Runtime的用户都遇到过类似问题,技术社区中这类提问较为常见,核心矛盾均为版本不支持多参数FLOOR()。临时替代方案(无需升级Runtime):
如果暂时无法升级Runtime,可以通过数学运算模拟多参数FLOOR()的效果:-- 等价于floor(3345.1, -2) select floor(3345.1 / pow(10, -2)) * pow(10, -2) --> 返回3300原理是先通过除以10的scale次方调整数值量级,取整后再还原回原量级。
内容的提问来源于stack exchange,提问作者Isolated
相关产品推荐
相关产品推荐

