Spark 3.0下Databricks SQL因周模式Y报错,求代码修改方案
问题解决方法
错误的核心原因有两个:
- Spark 3.0+禁用了基于周的年份格式(大写
YYYY),你用的TO_DATE('01-JAN-2099', 'DD-MON-YYYY')里的YYYY触发了这个限制; - Spark SQL的INTERVAL语法要求单位用单数形式,你写的
'1 days'不符合规范。
修改后的代码如下:
var mySql = """SELECT COL1 ,COL2 ,START_DATE ,LEAD(START_DATE - INTERVAL '1 day', 1, TO_DATE('01-JAN-2099', 'DD-MON-yyyy')) OVER (PARTITION BY ACCT_NUMBER, CHARGE_VALUE ORDER BY START_DATE) AS END_DATE FROM mySchema.myTable """
关键修改点:
- 把
INTERVAL '1 days'改成INTERVAL '1 day',遵循Spark的INTERVAL语法要求; - 把
TO_DATE的格式字符串从'DD-MON-YYYY'替换为'DD-MON-yyyy',小写yyyy对应常规公历年份,不会触发基于周的年份禁用限制。
内容的提问来源于stack exchange,提问作者sgrewal116
相关产品推荐
相关产品推荐

