Automatisierung in Power BI – Alle Measures formatieren, Texte ersetzen, Standardzusammenfassung setzen und vieles mehr
This post is also available in: Englisch
Eine Thematik, die aus meiner Sicht zu wenig Beachtung findet, ist die Möglickeit Arbeiten in Power BI mit dem Tabular Editor zu automatisieren.
Gerade die offizielle Dokumentation gibt einige schöne Einblicke, welche Möglichkeiten die Scripting-Engine bietet.
Ein paar Beispiele möchte ich in diesem Artikel vorstellen.
Beispiel 1: Alle Measures automatisch formatieren
Wer öfters mit Power BI arbeitet, kennt die Situation, dass man einen Report öffnet und alle Measures aussehen wie in dem folgenden Bild:
Ohne korrekte Formatierung ist hier kaum zu erkennen, was die Formel überhaupt macht. Wenn nun alle Measures so aussehen ist die Frustration gross. Allerdings schafft hier die Scripting-Engine des Tabular Editors Abhilfe. Dieser lässt sich einfach über die external Tools starten:
Im Tabular Editor kann nun über das “Advanced Scripting” Feld der folgende C# – Code eingegeben werden:
Model.AllMeasures.FormatDax();
Nach einem Klick auf “Run Script” (grüner Pfeil) oder einem Klick auf die F5-Taste wird der Code ausgeführt.
Danach müssen die Änderungen noch vom Tabular Editor in die geöffnete Power BI Datei zurückgeschrieben werden (Strg + S) oder File –> Save und dann wurden bereits alle Measures in der Power BI Datei formatiert:
Beispiel 2: Ersetzen von Namen und Formeln
Nehmen wir den Fall an, dass in einem Report öfters eine Berechnung vollzogen wird, beispielsweise die Berechnung der Verkaufszahlen:
Sales US = Calculate(SUM(myTable[SalesAmount]), Country="United States")
Im Report wurde nun mehrfach SUM(myTable[SalesAmount] als Teil der Berechnung verwendet. Aus Wartungsgründen ist es allerdings cleverer, die SUM-Formel mit einem Measure zu ersetzen. Die lässt sich ebenfalls per Script mit einer Foreach-Schleife durchführen:
// Replacement within a Measure
var SearchString = "SUM(myTable[SalesAmount])"; // set the search string
var ReplaceString = "[Sales Amount]"; // set the replace string
foreach (var m in Model.AllMeasures)
{
m.Expression = m.Expression.Replace(SearchString, ReplaceString);
}
Gelegentlich ändern sich auch Bezeichnungen innerhalb eines Reports. Beispielsweise, wenn anstatt “Sales Amount” nur noch “Sales” verwendet werden soll. Auch hier bietet der Tabular Editor die Möglichkeit mit der foreach-Schleife sämtliche Elemente oder Measures durchzugehen und Texte entsprechend auszutauschen.
Das entsprechende Script wäre hier:
// Replace a string in a Measure Name
var SearchString = "Sales Amount"; // set the search string that you want to replace
var ReplaceString = "Sales"; // set the replace string
foreach (var m in Model.AllMeasures)
{
m.Name = m.Name.Replace(SearchString, ReplaceString);
}
Zu Beachten wäre bei letzterem allerdings, dass die Visuals weiterhin die alte Bezeichnung des Measures verwenden möchten.
Beispiel 3: Default Summarization ändern
Ein weiteres Beispiel wäre die Standardzusammenfassung von allen oder einzelnen Spalten auf “Nicht zusammenfassen” zu stellen.
Hierbei gäbe es wieder die Möglichkeit dies bei allen Spalten anzupassen:
foreach(var c in Model.AllColumns)
{
c.SummarizeBy = AggregateFunction.None;
}
Vermutlich in der Realität öfters benöitgt wäre die Möglichkeit mehrere Spalten zu markieren und dann die markierten Spalten “Nicht zusammefassen” zu setzen.
foreach(var c in Selected.Columns)
{
c.SummarizeBy = AggregateFunction.None;
}
Hierzu müssen einfach mehrere Spalten markiert wrden und das oben genannte Script muss ausgeführt werden:
Aktionen als “Custom Action” speicher
Noch ein kleiner Tipp zum Schluss. Die eben genannten Skripte kann man im “Advanced Scripting” Fenster über das Plus-Zeichen als Custom Actions speicher. Somit kann man sich die häufig benötigten Skripte per Mausklick sofort herbeiholen.