You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Synapse PySpark代码解析错误排查:输入无可行替代方案

Azure Synapse PySpark中SQL双括号解析错误的修复方案

问题描述

在Azure Synapse PySpark环境运行给定代码时出现SQL解析错误,核心问题是PIVOT语句后的冗余括号以及字符串拼接方式导致Synapse无法正确解析SQL语法。

修复方案

针对问题点,从语法修正和字符串写法优化两方面调整:

  • 移除冗余括号:PIVOT语句的别名RESULT后无需额外闭合括号,原代码中)AS RESULT)的多余括号会破坏SQL结构,需删除。
  • 改用多行字符串:用Python三引号定义SQL字符串,替代反斜杠换行拼接,避免隐形空格或语法问题,同时提升代码可读性。

修复后完整代码

def curated_report(entity_name):
    sqlstr = """WITH Participant_Name 
    AS (SELECT 
    CASEID, 
    PARTICIPANTID, 
    LASTWRITTEN, 
    PARTICIPANT, 
    FIRSTNAME, 
    MIDDLENAME, 
    LASTNAME 
    FROM (SELECT 
    ab.CASEID, 
    ab.PARTICIPANTID, 
    ab.DYNAMICDATATYPE, 
    ab.DYNAMICEVIDENCEVALUE, 
    ab.LASTWRITTEN 
    FROM a.ev ab 
    INNER JOIN (SELECT 
    PARTICIPANTID, 
    MAX(LASTWRITTEN) AS MAXDATE 
    FROM a.bd 
    WHERE TYPE IN ('PDC001') 
    GROUP BY PARTICIPANTID) cd 
    ON ab.PARTICIPANTID = cd.PARTICIPANTID 
    AND ab.LASTWRITTEN = cd.MAXDATE 
    GROUP BY ab.CASEID, 
    ab.PARTICIPANTID, 
    ab.DYNAMICDATATYPE, 
    ab.DYNAMICEVIDENCEVALUE, 
    ab.LASTWRITTEN) AS SOURCE 
    PIVOT(MAX(DYNAMICEVIDENCEVALUE) 
    FOR DYNAMICDATATYPE IN (PARTICIPANT, 
    FIRSTNAME, 
    MIDDLENAME,
    LASTNAME) 
    ) AS RESULT) 
    SELECT * 
    FROM PARTICIPANT_NAME"""
    df = spark.sql(sqlstr)
    return df

关键修复说明

  1. 修正PIVOT语法:将原代码中)AS RESULT)改为) AS RESULT,移除多余的闭合括号,符合Spark SQL(Synapse兼容)的PIVOT语法规范。
  2. 优化字符串写法:三引号多行字符串无需手动添加反斜杠,避免换行时引入的隐性语法错误,同时让SQL结构更直观。
  3. 统一SQL关键字大写:如MAX、WHERE,既符合SQL编码规范,也能减少Synapse语法解析的潜在问题。

内容的提问来源于stack exchange,提问作者emmy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 01:20:46