如何在 spark sql 连接条件中将字符串数据类型转换为日期:to_date 不起作用并且转换抛出错误
Posted
技术标签:
【中文标题】如何在 spark sql 连接条件中将字符串数据类型转换为日期:to_date 不起作用并且转换抛出错误【英文标题】:How to cast string dataype to date in spark sql join condition: to_date not working and cast is throwing error 【发布时间】:2019-05-15 17:25:50 【问题描述】:我正在使用 pyspark 在 redshift 中加入两个表。连接条件是在一个表中的日期为字符串格式的日期和另一个表中的数据类型为 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
而我的 spark 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: u'函数转换的参数数量无效;
我应该如何在 spark-sql 中使用日期转换
【问题讨论】:
【参考方案1】:你使用了错误的方法,你试试这个:
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))"""
【讨论】:
我已经试过了,但是乘数列还是空的以上是关于如何在 spark sql 连接条件中将字符串数据类型转换为日期:to_date 不起作用并且转换抛出错误的主要内容,如果未能解决你的问题,请参考以下文章
Scala - 如何在 Spark SQL 查询中将日期字符串转换为时间戳?