将spark sql
转换为string
时,我在decimal(15,7)
中遇到问题。
输入数据为:
'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
答案 0 :(得分:2)
您可以尝试使用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|
+------+-----------+