Power BI中TOM的Group By Columns属性数据刷新后重置问题
解决Tabular Editor中Group By Columns属性刷新重置及Field Parameters复合键配置问题
一、普通表Group By Columns刷新后重置的解决方案
手动设置表的Group By Columns属性后执行数据刷新会被重置,核心原因是默认的Full刷新策略会同步数据源元数据,覆盖自定义分组配置。解决方式如下:
- 修改目标表刷新策略:
- 在Tabular Editor中定位到目标表,打开属性面板
- 找到Refresh Policy选项,将其从默认的
Full改为Preserve
- 批量配置(TOM脚本):
若需给多个表设置,可运行以下脚本:// 替换为你的目标表名集合 var targetTables = new[] { "Table1", "Table2" }; foreach(var tableName in targetTables) { var table = Model.Tables[tableName]; table.RefreshPolicy = RefreshPolicy.Preserve; }
注意:设置
Preserve后,数据源的结构变更不会自动同步到模型,需手动更新表结构适配数据源变化。
二、Field Parameters中配置复合分组键并保留设置
要利用Group By Columns将[fieldparametername]Fields和[fieldparametername]Fields Fields设为复合键,同时确保刷新后配置不丢失,按以下步骤操作:
- 定位Field Parameters对应表:在Tabular Editor中找到名称包含
Parameter Table - [fieldparametername]的表 - 设置Group By Columns:
- 打开该表的属性面板,找到Group By Columns字段,点击编辑按钮
- 添加
[fieldparametername]Fields和[fieldparametername]Fields Fields两列到分组列表
- 锁定配置:将该表的Refresh Policy设置为
Preserve,避免刷新时覆盖分组配置 - 脚本化配置(可选):
若需批量处理Field Parameters表,可使用:// 替换为你的Field Parameter名称 var paramName = "YourFieldParameterName"; var paramTable = Model.Tables.First(t => t.Name == $"Parameter Table - {paramName}"); // 添加复合分组列 var groupColumns = paramTable.Columns.Where(c => c.Name == $"{paramName}Fields" || c.Name == $"{paramName}Fields Fields" ); paramTable.GroupByColumns.Clear(); paramTable.GroupByColumns.AddRange(groupColumns); // 设置保留刷新策略 paramTable.RefreshPolicy = RefreshPolicy.Preserve;
内容的提问来源于stack exchange,提问作者Jim
相关产品推荐
相关产品推荐

