Ошибка при преобразовании строковых данных в десятичный в правильном формате в sparksql - PullRequest
0 голосов
/ 29 ноября 2018

У меня возникла проблема в 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

1 Ответ

0 голосов
/ 29 ноября 2018

Вы можете попробовать использовать метод 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|
+------+-----------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...