При чтении документации Spark DataType BigDecimal (точность, масштаб) означает, что
- Точность - это общее количество цифр, а
- Масштаб - это число цифр после десятичной точки.
Поэтому, когда я приводю значение к десятичному числу
scala> val sss = """select cast(1.7142857343 as decimal(9,8))"""
scala> spark.sql(sss).show
+----------------------------------+
|CAST(1.7142857343 AS DECIMAL(9,8))|
+----------------------------------+
| 1.71428573| // It has 8 decimal digits
+----------------------------------+
Но когда я приводю значения выше 10.0, я получаю NULL
scala> val sss = """select cast(12.345678901 as decimal(9,8))"""
scala> spark.sql(sss).show
+----------------------------+
|CAST(11.714 AS DECIMAL(9,8))|
+----------------------------+
| null|
+----------------------------+
Я ожидаю, что результат будет 12.3456789 ,
- Почему он равен NULL?
- Почему именно точностьне реализуется?