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
相关产品推荐
相关产品推荐

