Automatisierung in Power BI – Alle Measures formatieren, Texte ersetzen, Standardzusammenfassung setzen und vieles mehr

March 21, 2021
Denis Selimovic
Tabular Editorcomment 3Created with Sketch Beta.0 comments

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:

Unformatierte Formel in DAX
Unformatierte Formel in DAX

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:

Start Tabular Editor aus Power BI
Start Tabular Editor aus Power BI

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.

Alle Measures automatisch mit Tabular Editor formatieren
Alle Measures automatisch mit Tabular Editor formatieren

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:

Formatiertes DAX Measure
Formatiertes DAX Measure

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:

Standardaggregation in markierte Spalten entfernen
Standardaggregation in markierte Spalten entfernen

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.