Spark: преобразование типа данных «строка в дату», возвращающее нулевые значения - PullRequest
1 голос
/ 31 января 2020

У меня есть фрейм данных и tring, чтобы преобразовать его тип данных из некоторых столбцов, поэтому я использую следующую функцию:

val rawDF = df.selectExpr(df.columns.map(cn => {
                if (Set("speed", "weight", "height").contains(cn)) s"cast($cn as double) as $cn"
                else if (Set("isActive").contains(cn)) s"cast($cn as date) as $cn"
                else cn
            }):_*)

Но проблема заключается в следующем: для преобразования даты (тип строки в тип данных) я получение нулевых значений.
Мои значения даты: 31.12.2016

1 Ответ

0 голосов
/ 31 января 2020

Ваша строка даты не в формате по умолчанию. Вы должны конвертировать в метку времени на основе известного формата.

Например:

val df = spark.sql("""
  SELECT '31.12.2016' as isActive"""
)

val rawDF = df.selectExpr(df.columns.map(cn => {
                if (Set("speed", "weight", "height").contains(cn)) s"cast($cn as double) as $cn"
                else if (Set("isActive").contains(cn)) s"TO_DATE(CAST(UNIX_TIMESTAMP($cn, 'dd.MM.yyyy') AS TIMESTAMP)) as $cn"
                else cn
            }):_*)

Вывод:

+----------+
|isActive  |
+----------+
|2016-12-31|
+----------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...