删除Snowflake视图列后如何更新PowerBI数据源引用
适配Snowflake视图删列后PowerBI Direct Query报错的操作方案
根本原因
Direct Query模式下PowerBI会双重缓存数据源元数据:一是Power Query层的表结构缓存,二是报表层的字段引用缓存,你之前的操作只更新了Power Query层的结构,报表层的可视化、度量、关系等对象仍然在引用已删除的列,同时全局查询缓存未清理会导致旧查询语句重复执行触发报错。
可执行解决步骤
- 第一步:清理全局缓存
依次点击「文件>选项和设置>选项>数据加载」,点击「清除缓存」按钮清除全局数据缓存;再切换到同窗口的「Direct Query」设置页,清空Direct Query专用缓存后保存设置。 - 第二步:排查所有已删列的依赖
在右侧「字段」面板搜索被删除的两个列名,依次处理三类引用:- 删除/修改引用了这两个列的度量值、计算列、计算表
- 解绑所有可视化的轴、图例、筛选器中绑定的已删列
- 删除模型页中用已删列建立的表关系
- 第三步:修正Power Query的M代码
打开Power Query编辑器,选中对应Snowflake视图的查询,打开高级编辑器检查M代码,删除列选择步骤中硬编码的已删列名称,确认M代码中仅保留现有15个列的引用后,执行查询刷新预览,确认无问题后点击「关闭并应用」。 - 第四步:强制全量刷新
回到报表页,按住Shift键点击顶部工具栏的「刷新」按钮,触发无缓存的全量查询刷新。
后续变更预防建议
后续修改Snowflake视图结构前,先在PowerBI的「字段」面板搜索待删除列的全量引用,确认无依赖后再执行视图变更;如果是复杂报表可以加过渡步骤:先在Snowflake视图中保留待删列、赋值为NULL或默认值,等PowerBI侧完全清理完所有引用后再正式删除视图列,避免中断报表使用。
内容的提问来源于stack exchange,提问作者Kushdesh
相关产品推荐
相关产品推荐

