pyspark 当我运行特定代码时,反复收到以下错误Azure数据块

rqmkfv5c  于 2023-03-01  发布在  Spark
关注(0)|答案(1)|浏览(96)
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

(我需要正确的代码。)

hkmswyz6

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')

相关问题