Как привести тип строки данных на сегодняшний день в сплайновом SQL-соединении: to_date не работает, и приведение вызывает ошибку - PullRequest
0 голосов
/ 15 мая 2019

Я соединяю две таблицы в красном смещении, используя pyspark. Условие соединения находится между датой в одной таблице с датой в строковом формате и типом данных varchar в другой таблице

продаж:

Sales    id    tx_date
123.5    1234  2019-02-15
154      1235  2019-02-14

Дата данных:

Date      Multiplier 
02/15/19  2
02/14/19  3

И моя искра sql

data = spark.sql(""" select s.sales,s.id, ,d.multiplier from  sales s inner join
                    dateinfo d on s.tx_date=to_date(d.date,'mm/dd/yy')""")

возвращает пустые значения для столбца множителя

Sales    id    multiplier
123.5    1234  
154      1235 

Я пытался назначить дату

data = spark.sql(""" select s.sales,s.id, ,d.multiplier from  sales s inner join
                        dateinfo d on s.tx_date=to_date(cast(unix_timestamp(d.date,'mm/dd/yy')))"""

Это выдает ошибку AnalysisException: недопустимое количество аргументов для приведения функции;

Как мне использовать преобразование даты в spark-sql

1 Ответ

0 голосов
/ 15 мая 2019

вы используете метод приведения неверно, попробуйте это:

data = spark.sql(""" select s.sales,s.id, ,d.multiplier from  sales s inner join
                    dateinfo d on s.tx_date=to_date(cast(unix_timestamp(d.date,'mm/dd/yy') as TIMESTAMP))"""
...