start_date_str = dbutils.widgets.get("startdate")
start_date = to_date(lit(start_date_str), 'yyyy-MM-dd')
enddate = (spark
.range(1)
.select(date_add(start_date, 365 * 10).alias("enddate"))
.collect()[0]["enddate"]
)
(
spark.sql(f"select explode(sequence(to_date('{start_date}'), to_date('{enddate}'), interval 1 day)) as calendarDate")
.createOrReplaceTempView('dates')
)
如何解决此错误
ParseException:
[PARSE_SYNTAX_ERROR] Syntax error at or near 'to_date'(line 1, pos 41)
== SQL ==
select explode(sequence(to_date('Column'), to_date('2009-12-29'), interval 1 day)) as calendarDate
(我需要正确的代码。)
1条答案
按热度按时间hkmswyz61#
最有可能的原因是这段代码:
to_date('{start_date}')
.问题是
start_date
是列对象,所以当您在字符串中打印它时,它会被表示为Column<'to_date(2022-01-01, yyyy-MM-dd)'>
,从而导致错误。您可以将
to_date('{start_date}')
更改为to_date('{start_date_str}', 'yyyy-MM-dd')