Power BI 2020年5月版Edit Queries修改应用后不生效咨询
问题定性
该问题不属于操作失误,是Power BI Desktop 2020年5月版本(内部版本号2.81.5831.x)的已知Bug:当数据源为SQL Server存储过程时,Power Query编辑器内完成的结构类修改(含存储过程新增字段识别、UI操作调整列顺序、修改列数据类型等),点击Close & Apply时仅会同步行级数据内容,不会触发数据模型层的元数据更新,因此编辑器预览窗口显示正常的修改,回到数据视图/报表视图后会直接回退到变更前的状态。
无需升级版本的解决步骤
- 打开Power Query编辑器(即Edit Queries入口),找到绑定SQL Server存储过程的目标查询,右键选择
Advanced Editor打开M代码编辑界面,将原有执行存储过程的代码临时注释,替换为结构匹配的空表定义。例如原执行代码为Sql.Database("SQL实例地址","目标库名",[Query="EXEC 自定义存储过程名"]),则临时替换为#table(type table [原字段1 as text, 原字段2 as number, 新增字段 as 对应数据类型], {}),点击确认保存修改。 - 点击
Close & Apply等待模型同步完成,此步骤会清空模型层原有绑定的存储过程旧元数据缓存。 - 再次打开Power Query编辑器,进入
Advanced Editor删除临时添加的空表代码,恢复原有存储过程执行语句。不要使用右键菜单的「Move Right/Left」功能调整列顺序,直接在M代码末尾显式添加列重排步骤,使用Table.ReorderColumns函数指定最终列顺序,语法参考:= Table.ReorderColumns(前序步骤名, {"字段1","字段2","新增字段","字段3"}),列表内字段顺序即为最终展示顺序。 - 点击编辑器内的
Refresh Preview确认预览数据的字段完整性、列顺序符合预期后,再点击Close & Apply,即可完成所有结构变更的同步。
避坑说明
该版本下针对存储过程数据源的UI类结构调整(拖拽列、右键移动列)生成的Power Query步骤无法被模型层正确识别,所有列结构、顺序、类型修改必须通过显式编写M函数步骤实现,才能持久生效。如果上述步骤执行后仍存在同步异常,可进入「File-Options and settings-Options-Data Load」,取消勾选「Allow data preview to download in the background」,重启Power BI后重复操作即可,后台预览缓存是该版本触发元数据不同步的另一常见诱因。
内容的提问来源于stack exchange,提问作者Dan S.
相关产品推荐
相关产品推荐

