Contenidos
Nun, inzwischen verstehen Sie wahrscheinlich, dass ich den Tabelleneditor für ziemlich gut halte. Ich mag alles und lerne jeden Tag mehr. Daniel Otykier hat mit dieser wunderbaren Software großartige Arbeit geleistet, und je mehr ich sie benutze, desto mehr liebe ich sie. Eine Sache, die der Tabelleneditor nicht hat, ist jedoch eine Menge Dokumentation. Da ist definitiv etwas in der Wiki und ein paar mehr in der Microsoft-Dokumentation, aber tödliche Nicht-Programmierer wie ich müssen den Rest zumindest vorerst selbst herausfinden. Aber wie das Sprichwort sagt: "Notwendigkeit ist die Mutter der Erfindung." Kein Problem, es gibt wenig Innovation, deshalb liebe ich es, wenn ich ein Problem finde, das gelöst werden muss.
Dann trat ein Problem auf
Heute habe ich mit einem Kunden gearbeitet. Sie haben ein komplexes Power BI DAX-Modell mit buchstäblich Hunderten von Maßnahmen. Kurz gesagt, wir haben beschlossen, dass ich viele Maßnahmen in Massen bearbeiten werde, um die Art und Weise zu ändern, wie sie geschrieben wurden. Die gleiche Änderung bei allen Maßnahmen, die das gleiche "Problem" haben. Ich möchte ein ähnliches Problem (nicht dasselbe Problem) mit Adventure Works neu erstellen und Ihnen die Lösung mitteilen, die ich zur Lösung dieses Problems mit dem Tabelleneditor gefunden habe.
Definition eines analogen Problems
Angenommen, Sie haben die folgenden Kennzahlen im Adventure Works-Datenmodell.
Gesamtkettenumsatz = BERECHNEN (SUMME (Verkäufe [ExtendedAmount]), Produkte [Unterkategorie] = "Ketten") Gesamtbremsverkäufe = BERECHNEN (SUMME (Verkäufe [ExtendedAmount]), Produkte [Unterkategorie] = "Bremsen") Gesamtkappenverkäufe = CALCULATE (SUM (Sales [ExtendedAmount]), Produkte [SubCategory] = "Caps")
Es gibt 37 Unterkategorien in Adventure Works. Nehmen wir also an, Sie haben 37 Messungen, die so aussehen.
Stellen Sie sich nun vor, Sie möchten die Lesbarkeit Ihrer Messungen verbessern. Also stattdessen
CALCULATE (SUM (Sales [ExtendedAmount]), Produkte [SubCategory] = "Chains")
Du willst das haben
BERECHNEN ([Gesamtumsatz], Produkte [Unterkategorie] = "Ketten")
Wo
Gesamtumsatz = SUMME (Umsatz [ExtendedAmount])
Sie müssen jetzt 37 Messungen bearbeiten, wenn Sie mit der Änderung fortfahren möchten.
Denken Sie daran, dass es keine Rolle spielt, ob Sie denken, dass es eine gute oder eine schlechte Idee ist, diese Messungen durchzuführen, oder ob Sie denken, dass es eine gute oder eine schlechte Idee ist, die Änderungen vorzunehmen. Ich erstelle hier lediglich einen Anwendungsfall, um ein skriptfähiges Problem im Tabelleneditor zu demonstrieren. Wenn Sie ein ähnliches Problem haben, ist dies für Sie.
Tabellarisches Editor-Skript
Ich war mir ziemlich sicher, dass Tabular Editor dies tun könnte, aber ohne Sprachreferenz hatte ich wirklich nur eine Ahnung, um fortzufahren. Nach wie vor schaute ich Wiki und fand eine Codezeile wie folgt:
string.Join
Ich fand es interessant und fragte mich, ob es so etwas wie ein Seil gab. Ersetzen. Ich habe es mit dem Output () - Debugger getestet und zu meiner Überraschung hat es funktioniert. Hier ist das Skript, das ich geschrieben habe.
/ * Warnung! Nehmen Sie zuerst eine Sicherungskopie. Dieses Skript wird für jede Kennzahl im Modell ausgeführt. Es ist wichtig, dass FromString und ToString so eingestellt sind, dass nur die spezifische Verwendung der Zeichenfolge geändert wird, die Sie im gesamten Modell ändern müssen. * / Var FromString = "CALCULATE (SUM (Sales [ExtendedAmount])"; var ToString = " CALCULATE ([Total Sales] "; foreach (var m in Model.AllMeasures) {m.Expression = m.Expression.Replace (FromString, ToString); / * Durchlaufen Sie alle Kennzahlen im Modell und ersetzen Sie den FromString durch den ToString * / }}
Beachten Sie, dass beim Ersetzen (von, bis) zwischen Groß- und Kleinschreibung unterschieden wird. Sie müssen daher die Groß- und Kleinschreibung korrekt eingeben und möglicherweise für verschiedene Großbuchstaben in Formeln wiederholen.
Ändern Sie den Text in allen Kennzahlennamen
Daniil aus XXLBI.com schlug mir einen anderen Anwendungsfall vor. Angenommen, Sie haben 50 Takte, alle mit Namen wie:
- Gesamtumsatz
- Gesamtumsatz LY
- Gesamtumsatz bis heute
- usw
Nehmen wir nun an, jemand hat entschieden, dass der Begriff "Einkommen" besser ist als "Umsatz". Mit einer kleinen Änderung kann mein Skript auch dieses Problem lösen. Anstatt Text im Kennzahlausdruck zu ersetzen, sollten Sie den Kennzahlnamen wie unten gezeigt ersetzen.
var FromString = "Gesamtumsatz"; var ToString = "Gesamtumsatz"; foreach (var m in Model.AllMeasures) {m.Name = m.Name.Replace (FromString, ToString); / * Durchlaufen Sie alle Kennzahlen im Modell und ersetzen Sie den FromString durch den ToString in den Kennzahlennamen * /}
Ich habe dieses Skript getestet und freue mich, Ihnen mitteilen zu können, dass damit auch Änderungen an allen abhängigen Maßnahmen behoben wurden. Daher wurden alle Metriken, die in der Metrikformel auf [Gesamtumsatz] verweisen, ebenfalls aktualisiert und auf [Gesamtumsatz] verwiesen.
Können Sie sich Probleme vorstellen, die dieses Skript lösen kann?
Ich würde gerne von Ihnen hören, wenn Sie sich ein Problem vorstellen können, das mit diesem Skript gelöst werden kann. Meine Vermutung ist, dass es da draußen ein paar gibt, aber ich würde gerne von den Gräben hören, wenn dies Probleme in der realen Welt lösen kann. Veröffentlichen Sie Ihre Kommentare unten.
Alle meine Skripte werden im Wiki sein
Ich habe beschlossen, all diese Code-Schnipsel im Wiki zusammen mit den anderen von Daniel erstellten zu teilen, damit Sie sie im finden am Ende der Liste hier.