Estoy confundida cómo redonda y marrón está trabajando en chispa sql.

scala> spark.sql("select round(1.5, 0), bround(1.5, 0)").show()
+-------------+--------------+
|round(1.5, 0)|bround(1.5, 0)|
+-------------+--------------+
|            2|             2|
+-------------+--------------+


scala> spark.sql("select round(2.5, 0), bround(2.5, 0)").show()
+-------------+--------------+
|round(2.5, 0)|bround(2.5, 0)|
+-------------+--------------+
|            3|             2|
+-------------+--------------+


scala> spark.sql("select round(3.5, 0), bround(3.5, 0)").show()
+-------------+--------------+
|round(3.5, 0)|bround(3.5, 0)|
+-------------+--------------+
|            4|             4|
+-------------+--------------+
1
Hackaholic 14 jun. 2020 a las 16:43

3 respuestas

bround siempre se redondea a decimales a nearest incluso el valor entero.

bround (expr, d) - Devuelve expr redondeado a d lugares decimales usando el modo de redondeo HALF_EVEN.

round siempre se redondea a decimales al siguiente valor, ya sea even o odd.

round (expr, d) : devuelve expr redondeado a d decimales utilizando el modo de redondeo HALF_UP.

1
Srinivas 14 jun. 2020 a las 14:00

Este es el redondeo gaussiano. Aka bround se redondeará al número par más cercano. Los docs hablarán más sobre lo que implica este concepto .

1
justahuman 14 jun. 2020 a las 13:55

round usa HALF_UP, mientras que bround usa HALF_EVEN ( b anker's) redondeando [fuente].

1
mazaneicha 14 jun. 2020 a las 15:59