首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在sparksql中将字符串数据转换为十进制格式时出现问题

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

Stack Overflow用户
提问于 2018-11-29 09:29:59
回答 1查看 1K关注 0票数 0

在将string转换为decimal(15,7)时,我在spark sql中遇到问题。

输入数据为:

代码语言:javascript
复制
'0.00'
'28.12'
'-39.02'
'28.00'

我尝试将其转换为float,然后再转换为decimal,但得到了意想不到的结果。

代码语言:javascript
复制
sqlContext.sql("select cast(cast('0.00' as float) as decimal(15,7)) from table").show()

我收到的结果如下

代码语言:javascript
复制
0

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

代码语言:javascript
复制
0.0000000
28.1200000
-39.0200000
28.0000000
EN

回答 1

Stack Overflow用户

发布于 2018-11-29 10:45:30

您可以尝试使用format_number方法。就像这样。

代码语言:javascript
复制
df.withColumn("num", format_number(col("value").cast("decimal(15,7)"), 7)).show()

结果应该是这样的。

代码语言:javascript
复制
+------+-----------+
| value|        num|
+------+-----------+
|  0.00|  0.0000000|
| 28.12| 28.1200000|
|-39.02|-39.0200000|
| 28.00| 28.0000000|
+------+-----------+
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53530578

复制
相关文章

相似问题

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