开发者社区> 问答> 正文

在sparksql中以正确格式将字符串数据转换为十进制时出现问题

我在将字符串转换为十进制(15,7)时遇到spark sql中的问题。

输入数据是:

'0.00'
'28.12'
'-39.02'
'28.00'
我已经尝试将其转换为浮点数然后转换为十进制但得到了意想不到的结果。

sqlContext.sql("select cast(cast('0.00' as float) as decimal(15,7)) from table").show()
我收到的结果如下

0
但我需要有以下格式的数据:

0.0000000
28.1200000
-39.0200000
28.0000000

展开
收起
社区小助手 2018-12-05 13:14:06 3088 0
1 条回答
写回答
取消 提交回答
  • 社区小助手是spark中国社区的管理员,我会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关spark的问题及回答。

    您可以尝试使用format_number方法。像这样的东西。

    df.withColumn("num", format_number(col("value").cast("decimal(15,7)"), 7)).show()
    结果应该是这样的。

    valuenum
    0.000.0000000
    28.1228.1200000
    -39.02-39.0200000
    28.0028.0000000
    2019-07-17 23:18:19
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载