Как округлить значения в Spark sql - PullRequest
0 голосов
/ 07 июня 2019

Я запрашиваю Postgres SQL, используя следующий запрос.Мне нужно округлить вниз значение min(months_between(current_date,somedate))

, например: 13.83 должно быть 13, а не 14, даже 13.9должно быть 13.Есть ли какая-нибудь функция, которая может округлять это значение в sparksql?Любая помощь будет высоко оценена.

spark.sql(select id, min(months_between(current_date,somedate))  mnths \n" +
            "   from table1\n" +
            "      where B = "ball"\n" +
            "   group by\n" +
            "      id\n" +
            "   order by\n" +
            "      id 
)

Ответы [ 2 ]

1 голос
/ 07 июня 2019

Вы можете использовать функцию floor().Он округляет аргумент.

Обратите внимание, что floor(x) дает наибольшее целое число ≤x.Таким образом, floor(5.8) возвращает 5, а floor(-5.8) возвращает -6.Если ваши значения могут быть отрицательными, и вы хотите округлить их до 0, вы должны проверить их знак и использовать floor() или ceil() (округление до верхнего значения).

Также обратите внимание, что приведениеfloat к int с int() округляет его до нуля независимо от его знака.Не уверен в реальном поведении в spark-sql, но это может решить и вашу проблему.

1 голос
/ 07 июня 2019

Пожалуйста, попробуйте использовать функцию floor , перейдите по этой ссылке: https://spark.apache.org/docs/2.3.0/api/sql/index.html#floor

...