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

Power BI连接Snowflake失败:SQL语句在Snowflake有效但Power BI报错

问题解决:Power BI连接Snowflake时SQL语句报错

错误原因

Power BI通过ODBC连接Snowflake时,不支持将SET这类会话级命令和SELECT语句放在同一个查询脚本中。ODBC驱动会把整个脚本当作单一查询解析,而SET不属于查询语句的合法语法,因此触发编译错误。另外,Power BI可能会自动为查询添加包裹括号,导致原本的多语句脚本出现额外的语法冲突。

解决方案

方案1:移除未使用的SET语句

如果当前SELECT语句并未用到IP_EVENT_TYPE_ID变量,直接删除SET行,保留纯SELECT语句即可:

select CriticalityLevelDescription, CriticalityLevelID, Department, DeviationID, EventTypeID
from QUALITY_DEVIATIONS.CV_0346_SJ_QIMS_DEVIATIONS

方案2:整合变量逻辑到查询中

如果需要使用该变量进行过滤(比如匹配EventTypeID),可以将变量逻辑直接写入查询,或改用Power BI原生参数传递:

方式A:直接在查询中使用变量值

select CriticalityLevelDescription, CriticalityLevelID, Department, DeviationID, EventTypeID
from QUALITY_DEVIATIONS.CV_0346_SJ_QIMS_DEVIATIONS
where EventTypeID like '*' -- 若需模糊匹配用LIKE,精确匹配用=

方式B:使用Power BI参数传递

在Power BI中定义参数后,通过占位符传递值:

select CriticalityLevelDescription, CriticalityLevelID, Department, DeviationID, EventTypeID
from QUALITY_DEVIATIONS.CV_0346_SJ_QIMS_DEVIATIONS
where EventTypeID like ?

然后在Power BI的查询设置中绑定参数值为*,实现动态过滤。

方案3:预设置会话变量(进阶)

若必须使用Snowflake会话变量,可通过Snowflake的连接属性或预执行脚本设置变量,再执行SELECT语句。具体需在Power BI的Snowflake连接设置中,添加预执行的SET命令(部分版本支持),确保变量在会话生效后再执行查询。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 18:18:17