Streudiagramm-Visualisierungen mit Charticulator
In diesem Tutorial erfahren Sie, wie Sie mit Charticulator eine Streudiagramm-Visualisierung für Ihren LuckyTemplates-Bericht erstellen und entwerfen.
Ich möchte die dynamischen Verwendungsmöglichkeiten der DAX-Funktion COLUMNSTATISTICS() weiter erforschen – eine neue, fast vollständig undokumentierte DAX-Funktion, die im August 2021 zu LuckyTemplates hinzugefügt wurde und einige sehr einzigartige Aspekte aufweist, deren Kennenlernen meiner Meinung nach sehr interessant sein wird . Das vollständige Video dieses Tutorials können Sie unten in diesem Blog ansehen.
Ich habe viel experimentiert und einige wirklich interessante neue Dinge darüber gelernt, wie diese Funktion funktioniert und was man damit machen kann. In meinem ersten Blog über diese Funktion habe ich über einige statische Verwendungen gesprochen. Heute werde ich über einige wirklich erstaunliche dynamische Verwendungsmöglichkeiten der Funktion sprechen, die selbst IntelliSense noch nicht auf dem neuesten Stand ist.
Inhaltsverzeichnis
So funktioniert die DAX-Funktion COLUMNSTATISTICS
Für jede Tabelle und jedes Feld in Ihrem Datenmodell erstellt COLUMNSTATISTICS eine Tabelle mit sechs zusätzlichen Feldern, die einen Tabellennamen, einen Spaltennamen, Mindest- und Höchstwerte für die Spalte, Kardinalität und eine Höchstlänge aufweist. Das scheinen nicht viele Daten zu sein, aber man kann damit eine Menge anfangen.
Die Daten, die ich derzeit verwende, sind lediglich der Übungsdatensatz für die externen Tools von LuckyTemplates. Es handelt sich um ein relativ einfaches Datenmodell mit fünf Dimensionstabellen, einer Faktentabelle und einer Messwerttabelle . Ein solches Modell ist nicht so schwer zu verfolgen, aber ein komplexes Modell erfordert eine viel komplexere Datensatzüberwachung.
Die Metadaten für einen komplexen Datensatz werden im Hinblick auf die Betrachtung der Kardinalität, also der Anzahl eindeutiger Werte innerhalb eines Felds, viel wichtiger. Es hat einen großen Einfluss auf die Größe Ihres Modells und möglicherweise auch auf die Verarbeitungsgeschwindigkeit.
Darüber hinaus ist es beim Erstellen eines Modells hilfreich, nicht nur die Anzahl der Tabellen zu kennen, sondern auch den Datumsbereich dieser Tabellen. Beim Aufbau Ihrer Datumstabelle achten Sie darauf, den gesamten Datenbereich Ihrer Faktentabelle abzudecken.
Versuchen wir also für dieses Beispiel, dem Datenmodell, an dem ich arbeite, eine Tabelle hinzuzufügen. In der Power Query gehen wir zu New Source und dann zu Blank Query . Und dann gehen wir in den erweiterten Editor und ich füge einfach eine Funktion namens List.Dates ein . Wir werden damit eine Tabelle mit der Kardinalität 10.000 erstellen, das sind also 10.000 eindeutige Daten.
Es wird eine Liste mit 10.000 Elementen zurückgegeben, die wir einfach in eine Tabelle umwandeln und diese Tabelle dann umbenennen können.
Wir können das Feld hier oben auf den neuesten Stand bringen. Und wenn wir auf „Schließen und Übernehmen“ klicken, werden wir sehen, dass unser intelligentes Narrativ dynamisch aktualisiert wird, ohne dass das gesamte Modell aktualisiert werden muss (wie wir es in der Vergangenheit getan haben).
Der Grund dafür, dass dies völlig dynamisch ist, liegt darin, dass wir alles mit Maßnahmen machen. Das Interessante ist, dass es viele Fehler anzeigt und die Funktion so neu ist, dass IntelliSense sie nicht richtig erkennt, aber tatsächlich funktioniert.
Kommen wir zum Tabelleneditor 3, der meiner Meinung nach der beste Weg ist, herauszufinden, was die komplexen DAX-Kennzahlen tatsächlich bewirken.
Denken Sie daran, dass die DAX-Abfrage Tabellen und keine Skalierer zurückgibt. Wenn wir also dieses Maß nehmen und es in eine DAX-Abfrage kopieren , wird ein Fehler angezeigt, da das Ergebnis hier immer noch ein Skalierer ist. Wir können den Debugging-Ansatz verwenden, bei dem das RETURN-Ergebnis durch einzelne Komponenten der Maßnahme ersetzt wird.
In diesem Fall ersetzen wir es durch ColStats , was wir oben einfach getan haben, indem wir die DAX-Funktion COLUMNSTATISTICS in eine Variable eingefügt haben. Damit erhalten wir genau das, was wir erwarten, nämlich die Standardspaltenstatistiktabelle.
Und jetzt wollen wir uns einfach die Spalte „Tabellenname“ ansehen und daraus die unterschiedlichen Werte herausnehmen und diese zählen. Das ist die Anzahl der Tabellen in unserem Datenmodell.
Zuerst wählen wir Spalten in unserer ColStats-Tabelle aus und geben einfach das Feld mit dem Tabellennamen zurück. Normalerweise möchten Sie in einem DAX-Measure oder einer DAX-Abfrage einen Feldnamen mit dem Tabellennamen davor zurückgeben. In diesem Fall wissen wir jedoch nicht, worauf der entsprechende Tabellenname verweist, da er nur virtuell existiert. Es scheint, dass der Variablenname nicht als Tabellenname akzeptiert wird.
In diesem Fall müssen wir also bei etwas bleiben, das wie eine Kennzahl aussieht, in Wirklichkeit aber eine Spaltenreferenz ohne die Tabellenreferenz davor ist. Und das funktioniert immer noch, auch wenn die Nomenklatur verwirrend ist. Wenn wir nun diese RETURN-Anweisung durch unsere TabCol ersetzen , erhalten wir genau das, was wir erwarten, nämlich das Modelltabellenfeld.
Und für das Ergebnis führen wir dann einfach eine Zählung der einzelnen Tabellenspalten durch. Wenn wir dies also durch DISTINCT(TabsCol) ersetzen , erhalten wir unsere sieben Tabellen.
Werfen wir nun einen Blick auf die höchste Kardinalität in der Tabelle mit der höchsten Kardinalität und sehen wir, wie wir diese erhalten haben. Dies ist tatsächlich ein wichtiges Muster, das Sie für viele verschiedene Dinge verwenden können, bei denen Sie suchen, nicht nur nach der Maximalzahl, sondern auch nach dem dieser Zahl zugeordneten Maximalattribut.
Werfen wir also einen Blick auf die MaxCardinality . Auch wenn es sich hierbei um einen Skalierer handelt, können wir ihn in eine Tabelle mit nur einer Zelle umwandeln, indem wir ihn einfach in Klammern setzen. Und wenn wir fünf erreichen, sehen wir, dass das der Kardinalitätswert von 10.000 ist.
Die Frage ist nun, wie nehmen wir dies und geben die dieser Kardinalität zugeordnete Tabelle zurück?
Dazu verwenden wir dieses sehr häufige Muster mit . Anschließend kopieren wir es in unsere RETURN-Anweisung und erhalten die erwartete Zeile, nämlich die Spalte „10.000 Daten“. Anstatt eine Reihe zu bekommen (weil es TOPN ist), bekommen wir zwei, weil es einen Gleichstand gibt.
ColStats erstellt außerdem für jede Tabelle einen Index in einer versteckten Indexzeile namens RowNumber , wobei es sich um eine eindeutige Kennung für jede Zeile der Tabelle handelt. Daher wird MaxCardinality immer von der RowNumber gespiegelt, wenn es sich um einen eindeutigen Bezeichner handelt.
Es spielt also keine Rolle, dass wir zwei Zeilen haben, denn was wir sehen, ist die maximale Anzahl an Tabellennamen. Und dieses Maximum dient nur dazu, einen Wert zurückzugeben, der andernfalls nur eine nackte Spalte wäre. Aber wir müssen etwas aggregieren, und in diesem Fall verwenden wir .
Wenn wir dann MaxCardinality in unsere RETURN-Anweisung einfügen und es in Klammern setzen, um eine Tabelle statt eines Skalierers zurückzugeben, wird der Wert von Test zurückgegeben.
Dieses TOPN-DAX-Muster ist ein wirklich gutes Muster, das Sie sich merken sollten, wenn Sie grundsätzlich einen Maximal- oder Minimalwert ermitteln und dann ein mit diesem Minimal- oder Maximalwert verknüpftes Attribut zurückgeben möchten.
Optimieren Sie LuckyTemplates-Formeln mithilfe der erweiterten DAX-
DAX-Kennzahlanalyse: Aufschlüsselung langer DAX-Kennzahlen.
DAX-Kennzahlen in LuckyTemplates mithilfe der Kennzahlverzweigung
Abschluss
Ich habe Ihnen den allgemeinen Ansatz und Kontext gegeben, den wir verwenden können, damit Sie die DAX-Funktion COLUMNSTATISTICS auf dynamische Weise optimal nutzen können. Die Möglichkeit, dies dynamisch anhand eines komplexen Modells zu verfolgen, ist meiner Meinung nach von enormem Wert in dieser Funktion.
Je mehr wir mit der COLUMNSTATISTICS-Funktion und ihrer Fähigkeit, Metadaten innerhalb von DAX dynamisch zu verarbeiten, experimentieren, desto interessantere Einsatzmöglichkeiten werden wir meiner Meinung nach finden. Wenn Sie also bereits einige interessante Verwendungsmöglichkeiten für diese DAX-Funktion gefunden haben, lassen Sie es mich bitte in den Kommentaren unten wissen.
Alles Gute!
In diesem Tutorial erfahren Sie, wie Sie mit Charticulator eine Streudiagramm-Visualisierung für Ihren LuckyTemplates-Bericht erstellen und entwerfen.
Erfahren Sie, wie Sie ein PowerApps-Suchfeld von Grund auf erstellen und es an das Gesamtthema Ihrer App anpassen.
Erlernen Sie ganz einfach zwei komplizierte Power Automate String-Funktionen, die in Microsoft Flows verwendet werden können – die Funktionen substring und indexOf.
Dieses Tutorial konzentriert sich auf die Power Query M-Funktion „number.mod“, um ein abwechselndes 0-1-Muster in der Datumstabelle zu erstellen.
In diesem Tutorial führe ich eine Prognosetechnik durch, bei der ich meine tatsächlichen Ergebnisse mit meinen Prognosen vergleiche und sie kumulativ betrachte.
In diesem Blog erfahren Sie, wie Sie mit Power Automate E-Mail-Anhänge automatisch in SharePoint speichern und E-Mails anschließend löschen.
Erfahren Sie, wie die Do Until Schleifensteuerung in Power Automate funktioniert und welche Schritte zur Implementierung erforderlich sind.
In diesem Tutorial erfahren Sie, wie Sie mithilfe der ALLSELECTED-Funktion einen dynamischen gleitenden Durchschnitt in LuckyTemplates berechnen können.
Durch diesen Artikel erhalten wir ein klares und besseres Verständnis für die dynamische Berechnung einer laufenden oder kumulativen Gesamtsumme in LuckyTemplates.
Erfahren und verstehen Sie die Bedeutung und ordnungsgemäße Verwendung der Power Automate-Aktionssteuerung „Auf jede anwenden“ in unseren Microsoft-Workflows.