如何通过Tabular Editor C#脚本为PowerBI度量值首个=后添加换行?
在Tabular Editor中用C#脚本实现DAX度量值首个
=后换行 单个度量值处理
如果仅需给单个选中的度量值添加换行,可通过字符串定位替换实现,自动适配=前后有无空格的情况:
// 选中单个度量值后执行此脚本 var measure = Selected.Measures.FirstOrDefault(); if (measure == null) return; // 定位第一个"="的位置 var eqIndex = measure.Expression.IndexOf('='); if (eqIndex == -1) return; // 跳过=后的所有空格,找到第一个非空格字符位置 var startIndex = eqIndex + 1; while (startIndex < measure.Expression.Length && char.IsWhiteSpace(measure.Expression[startIndex])) { startIndex++; } // 在=后插入换行符 var newExpression = measure.Expression.Insert(startIndex, Environment.NewLine); measure.Expression = newExpression;
批量处理(结合FormatDax函数)
Tabular Editor自带的FormatDax函数不会自动在度量名后换行,可先批量格式化DAX代码,再统一给所有度量值的首个=后添加换行:
// 遍历模型中所有度量值 foreach(var measure in Model.AllMeasures) { // 先调用FormatDax格式化公式 measure.Expression = TabularEditor.TOMWrapper.Formatter.FormatDax(measure.Expression); // 定位第一个"="的位置 var eqIndex = measure.Expression.IndexOf('='); if (eqIndex == -1) continue; // 跳过=后的空格,定位到第一个非空格字符 var startIndex = eqIndex + 1; while (startIndex < measure.Expression.Length && char.IsWhiteSpace(measure.Expression[startIndex])) { startIndex++; } // 插入换行符 measure.Expression = measure.Expression.Insert(startIndex, Environment.NewLine); } // 刷新Tabular Editor界面显示 Refresh();
效果示例
处理前的度量公式:
Count = DIVIDE ( COUNT ( Tests[Lot] ), DISTINCTCOUNT ( Tests[Part Number] ) )
处理后的度量公式:
Count = DIVIDE ( COUNT ( Tests[Lot] ), DISTINCTCOUNT ( Tests[Part Number] ) )
内容的提问来源于stack exchange,提问作者GollyJer
相关产品推荐
相关产品推荐

