在将string转换为decimal(15,7)时,我在spark sql中遇到问题。
输入数据为:
'0.00'
'28.12'
'-39.02'
'28.00'我尝试将其转换为float,然后再转换为decimal,但得到了意想不到的结果。
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-11-29 10:45:30
您可以尝试使用format_number方法。就像这样。
df.withColumn("num", format_number(col("value").cast("decimal(15,7)"), 7)).show()结果应该是这样的。
+------+-----------+
| value| num|
+------+-----------+
| 0.00| 0.0000000|
| 28.12| 28.1200000|
|-39.02|-39.0200000|
| 28.00| 28.0000000|
+------+-----------+https://stackoverflow.com/questions/53530578
复制相似问题