Tabular Editor一行代码批量替换度量值名称或表达式中的变量
工作中经常遇到一种情况,两个或多个PBIX文件,创建的DAX表达式基本相同,只是其中的变量不同。当然这种情况可以使用Tabular Editor批量复制度量值,然后手动修改表达式中的变量名,最后再手动修改度量值名称来解决。如何使用Tabular Editor批量复制度量值,链接如下:?
如果度量值数量较少的情况下,这个也还可以,不费时间,但如果度量值很多,就显得操作重复,效率低下了。
Tabular Editor可以简单快速的解决上述两个问题,分两部分,步骤如下:
第1部分,快速批量替换度量值表达式中的变量:
以将大搜订单和大搜业绩的副本(大搜订单 1,大搜业绩 1)修改为信息流订单和信息流业绩为例,
第一步:
从外部工具选项卡打开Tabular Editor,选中要修改的度量值,如图第一步:
第二步:
点击Advance Scripting选项卡,进入编辑栏中,如图第二步:
第三步:
将Selected.Measures.ReplaceExpression("大搜","信息流"); 这段代码粘贴到编辑栏中,然后点击绿色倒三角或按F5运行代码,如图第三步:
第四步:
代码之后后,会在右下角出现代码执行成功,有2个模型被改变(因为我只选择了两个度量值),且度量值旁边出现一个问号。如图第四步:
第二部分,更改度量值名称:
第五步:
Selected.Measures.Rename("大搜订单 1","信息流订单");
Selected.Measures.Rename("大搜业绩 1","信息流业绩");
这两段代码粘贴到编辑框中,然后点击绿色倒三角或按F5,执行代码,如图第五步:
第六步:
查看效果,可以看到度量值名称被修改,且度量值表达式中的变量也已经修改,且页面右下角显示代码执行成功,有2个模型被改变。如图第六步:
对于第二部分,也可以使用替换框来替换,选中要替换名称的度量值,右键->Batch Rename或点击F2,第一个空格写查找的文本,第二个空格写要替换的文本,如图替换法二:
注意事项:
1.一定要选中要修改的度量值,执行代码时选中要运行的代码。2.对于第一部分,如果需要将模型中所有的度量值表达式中的变量替换,只需要将代码替换为 foreach (var m in Model.AllMeasures) { m.Expression =m.Expression.Replace("大搜","信息流"); } 其他步骤不变。
3.代码一定不能忽略大小写,否则会提示错误 4.运行代码后一定要保存到模型中