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 zeige Ihnen, wie Sie Ihren Übungsdatensatz bei jeder Aktualisierung auf dem neuesten Stand halten . Sie können sich das vollständige Video dieses Tutorials unten in diesem Blog ansehen.
Wenn Sie Ihre DAX-Fähigkeiten wirklich verbessern möchten, müssen Sie sie nutzen und in die Praxis umsetzen. Und dazu benötigen Sie einen Übungsdatensatz, der Ihnen hilft, mögliche reale Szenarien zu visualisieren und daran zu arbeiten.
Das Problem bei Übungsdatensätzen besteht darin, dass die Daten normalerweise statisch sind . Damit Sie effizient üben können, müssen Sie den Eindruck erwecken, dass die Daten live sind.
Inhaltsverzeichnis
Einrichten eines Dateipfads für den Übungsdatensatz
Für meine Beispieldaten habe ich eine Excel-Datei mit Verkaufsdaten aus den Jahren 2014, 2015 und 2016.
Dies sind die Daten, die ich aktualisieren muss.
Den Speicherort des Dokuments finden Sie hier in meiner Symbolleiste für den Schnellzugriff.
Ich brauche das, um einen Parameter für meinen Dateipfad einzurichten. Also werde ich diesen Dokumentspeicherort kopieren.
Auf der rechten Seite befindet sich ein Zugangspunkt zur Symbolleiste für den Schnellzugriff.
Sobald ich darauf drücke, erhalte ich diesen Bildschirm.
Also wähle ich „Alle Befehle“ und wähle dann „Dokumentspeicherort“ aus . Fügen Sie das zur Symbolleiste für den Schnellzugriff hinzu und klicken Sie auf OK.
Jetzt gehe ich in Power Query , um den Parameter zu erstellen, der meinen Dateipfad enthält. Dieser Schritt ist wichtig, da er die Wiederherstellung aller Abfragen innerhalb des Modells ermöglicht, falls ein anderer Benutzer den Dateispeicherort ändert.
Also erstelle ich einen neuen Parameter .
Ich werde das FileLocation nennen .
Unter Typ wähle ich Text aus . Und für „Aktueller Wert “ füge ich den Speicherort des Dokuments ein, den ich zuvor kopiert habe.
Ich werde eine neue Abfrage erstellen.
Dann wähle ich die Beispieldaten aus, die ich als meinen Übungsdatensatz verwenden werde.
Da ich Verkaufsdaten aus den Jahren 2014, 2015 und 2016 habe, werden hier verschiedene Tabellen angezeigt. Ich muss nur die erste auswählen, nämlich Sales_2014 .
Nachdem ich nun die Sales_2014-Daten ausgewählt habe, ist es an der Zeit, diesen fest codierten Dateispeicherort in einen dynamischen Dateispeicherort zu ändern .
Ich gehe in den erweiterten Editor und wähle alles aus, was mit dem Dateispeicherort zusammenhängt .
Dann ändere ich das in den FileLocation-Parameter, den ich zuvor erstellt habe.
Dann drücke ich auf „Fertig“, um diese Änderungen in der Abfrage „Sales_2014“ zu sperren.
Erstellen des Datenvorbereitungsordners
Wenn ich mir die „Angewandten Schritte“ für die Abfrage „Sales_2014“ ansehe, klicke ich auf den Navigationsschritt . Dies zeigt mir, dass es auf den Quellschritt verweist .
Es verweist auch auf Sales_2014 , das als Tabelle angezeigt wird . Es zeigt auch, dass Daten aus der Datenspalte extrahiert werden.
Lassen Sie mich nun den Schritt „Quelle“ betrachten .
Der Quellschritt zeigt mir alles, was in meiner Excel-Datei enthalten ist . Wenn ich diese Koordinaten überprüfe, sehe ich Sales_2014 und unter Kind steht Table .
Wenn ich in der Datenspalte nachschlage, wird dort das extrahierte Tabellenobjekt angezeigt .
Daher kann ich diese Abfrage duplizieren, um die Daten für 2015 zu erhalten . Dazu muss ich nur mit der rechten Maustaste auf „Sales_2014“ klicken und dann „Duplizieren“ auswählen.
Dann gehe ich zurück zum Navigationsschritt.
Ich werde dieses Jahr von 2014 auf 2015 ändern.
Ich werde das auch hier unter Eigenschaften umbenennen. Ich nenne es Sales_2015.
Dieses Mal werde ich Sales_2015 duplizieren.
Dann gehe ich zurück zum Navigationsschritt und ändere das Jahr auf 2016.
Ich habe jetzt meine vollständigen Verkaufsdaten. Diese Abfragen sollten jedoch nicht in mein Modell geladen werden . Ich muss nur mit der rechten Maustaste auf jeden von ihnen klicken und die Option „Laden aktivieren“ deaktivieren .
Jetzt wähle ich alle Abfragen aus und platziere sie in einem einzigen Ordner, um die Organisation zu verbessern.
Ich werde diesen Ordner „Data Prep“ nennen .
Den Tagesversatz erzielen
Die Beispieldaten hier unter Datenvorbereitung werden statisch sein . Das bedeutet, dass sich der 1. und der letzte Termin nie ändern .
Ich gehe also zu „ Sales_2016“ und sortiere die Spalte „Bestelldatum“ in absteigender Reihenfolge , um das letzte Datum aus diesem Datensatz zu erhalten .
Das letzte Datum in diesem Datensatz ist der 31. Dezember 2016 .
Jetzt erstelle ich eine neue Abfrage.
Dann überprüfe ich, wie hoch der Tagesversatz vom letzten Datum im Datensatz bis heute ist. Das heißt, ich muss herausfinden, was heute ist. Dazu verwende ich die Funktion DateTime.FixedLocalNow . Dadurch erhalte ich Datum und Uhrzeit der Maschine, an der ich arbeite.
Aber ich brauche den Zeitanteil hier nicht wirklich. Ich benötige nur den Datumsteil dieses Werts.
Also werde ich das Datum mit Date.From extrahieren .
Von diesem Wert subtrahiere ich dann das letzte Datum in meinem Datensatz . Da die Daten statisch sind, kann ich den intrinsischen Datumswert verwenden . Das ist also #Datum und dann der Verweis auf den 31. Dezember 2016.
Jetzt muss ich die Zahl aus dieser Differenz extrahieren . Also füge ich Number.From hinzu und schließe es mit einer Klammer ab. Drücken Sie dann die Eingabetaste.
Ich werde dies in DayOffset umbenennen .
Dynamische Datumsbereiche einrichten
I also need dynamic date ranges for my date table. I’ll start off by doing a right click on the Data Prep folder and creating a new Blank Query.
Then, I’ll work on the Start Date of my Date table.
I always want the 1st day of the year as my Start Date. So I’ll put the equal sign and use the function Date.StartOfYear.
Since I need to give that a value, I’m going to offset that by using Date.AddDays.
Then I’ll use the intrinsic date value again and use the 1st date on my data set, which is June 1, 2014.
I also need the number of days that I calculated in my DayOffset, so I’m going to add that.
Once I press enter, it gives me January 1, 2017. This is going to be the 1st date in my date table.
I’ll rename that to fxStartDate.
Now, I can set up my End Date. I’m going to copy this syntax I used on my Start Date.
I’ll create a new blank query.
Then rename it to fxEndDate.
Then I’m going to paste the syntax from my Start Date.
Instead of StartOfYear, I’ll change this to EndOfYear.
I’m also going to use the last date of my data set, which is the 31st of December.
When I press enter, it returns December 31st, 2020.
Creating A Single Sales Table
I’m going to combine the 3 tables into a single Sales table. To do that, I’m going to create a new query.
I’ll call this my Sales table.
Then I’ll combine Sales_2014, Sales_2015 and Sales_2016 into a single table.
I know that you can do that through the ribbon, but there’s also an option to do it directly in the formula bar. I’ll choose that 2nd option.
I’ll start with Table.Combine.
Table.Combine requires a list of tables. So I’ll add a list initializer, which is those curly brackets, then I’m going to name the 3 queries. Press enter after that.
Transforming The Order Date Column
Now that I have most of the elements I need, I’m going to generate a key part of the syntax that I’m going to use later on to complete my dynamic practice dataset.
I’ll start by selecting two number columns. I can use the Delivery Region Index and the Product Description Index. On your end, you can press down either Shift or Ctrl to select both columns.
Under the Transform tab, I’ll select Absolute Value.
If I look at the formula bar, it will show the Table.TransformColumns function. This is the key to the final solution.
The function takes a list of transformation lists. As you can see, there are 2 lists here nested inside each other.
It references the column name as text. That’s why Delivery Region Index was referenced here on the 1st set.
Then it adds a transformation step.
It does the same in a separate list for the Product Description Index column.
Now, I’ll head to the Advanced Editor.
I don’t want absolute values. So the first thing I’m going to do is offset my date. I’ll create a function called fxUpdateDate to do that. It’s going to use the current date, which I’ll type in as cDate.
Dann werde ich wieder die Funktion Date.AddDays verwenden , die auch cDate verwendet . Ich werde auch den DayOffset verwenden, den ich zuvor erstellt habe.
Alles, was fxUpdateDate tut, ist, das Datum zu übernehmen. Wenn ich das also an die Table.TransformColumns -Funktion übergebe , beginnt sie mit der Prüfung für jedes aufgezeichnete Datum.
Wenn ich hier beispielsweise an der ersten Zeile arbeite, wird der 1. Juni 2014 als cDate berücksichtigt.
Und jedes Mal, wenn die Funktion aufgerufen wird, wird der von mir erstellte DayOffset hinzugefügt.
Jetzt wird der Table.Transform-Schritt in Calculated Absolute Value angezeigt .
Ich werde das zuerst umbenennen und es UpdateOrderDate nennen.
Dieser UpdateOrderDate- Schritt betrifft meine Table.TransformColumns, die der Quelle entspricht.
Die zunächst aufgeführte Tabelle ist der Delivery Region Index . Aber es besteht keine Notwendigkeit, das zu ändern. Deshalb werde ich die erste Spalte, auf die verwiesen wird, in die Spalte „OrderDate“ ändern .
Hier steht auch, dass die Transformation in absoluten Werten erfolgen wird.
Da ich das nicht möchte, werde ich das in fxUpdateDate ändern .
Der Typ wird auch kein absoluter Wert sein, daher muss ich auch diesen Teil ändern.
Ich werde das in ein Datum ändern .
Ich benötige nur eine Transformation, also lösche ich die zweite Liste zusammen mit dem Transformationsschritt, der zu diesem Satz gehört …
…es ist also nur eine Transformation für die OrderDate-Spalte.
Da ich den Schritt in „Berechneter absoluter Wert“ umbenannt habe, muss ich das auch in meiner In-Anweisung ändern.
Jetzt wird auch UpdateOrderDate angezeigt.
Daher ruft die OrderDate-Spalte diese Funktion nun für jeden Datensatz in Table.TransformColumns auf .
Wenn ich mir die Spalte „Bestelldatum“ ansehe, sehe ich, dass dies aktualisiert wurde.
Und wenn ich das in absteigender Reihenfolge sortiere, wird als aktuelles Datum der 7. Juli 2020 angezeigt.
Deshalb werde ich diesen Sortierschritt entfernen, da ich ihn nicht wirklich brauche. Ich habe das nur gemacht, um zu prüfen, ob auch das aktuelle Datum aktualisiert wurde.
Anwenden von Zeitintelligenz mithilfe von M-Code
In meinem Modell dreht sich alles um Verkaufsdaten . Da ich etwas Zeitintelligenz betreiben werde, benötige ich eine Datumstabelle .
Also gehe ich zum . Im M-Code Showcase gehe ich auf das Thema „Erweiterte Datumstabelle“ ein .
Scrollen Sie ganz nach oben auf der Seite und kopieren Sie den gesamten Code .
Wenn ich zurück zu meinem Modell gehe, erstelle ich eine neue leere Abfrage und füge den M-Code ein . Drücken Sie Fertig.
Ich werde diese Abfrage in fxCalendar umbenennen .
Für meine Parameter verwende ich den 1. Januar als StartDate und den 31. Januar als EndDate . Drücken Sie dann „Invoke“.
Sobald die Tabelle erscheint, werde ich sie in Dates umbenennen .
Denken Sie daran, dass ich das Start- und Enddatum bereits erstellt habe, indem ich mir das erste Datum im Beispieldatensatz angesehen und dieses mit meinem DayOffset verrechnet habe. Daher wird hier als fxStartDate der 1. Januar 2017 angezeigt .
Das fxEndDate gibt den 31. Dezember 2020 zurück .
Ich kann zur Datumstabelle zurückkehren und dort auch den Schritt „Quelle“ aktualisieren .
Es listet die Parameter in der Reihenfolge auf, in der sie aufgerufen wurden. Der erste Parameter sollte das Startdatum anzeigen .
Ich werde das in fxStartDate ändern .
Ich werde auch den zweiten Parameter ersetzen.
Ich werde das fxEndDate eingeben .
Sobald ich die Eingabetaste drücke, ist die Transformation abgeschlossen. Ich habe jetzt einen völlig aktuellen Praxisdatensatz, der immer aktuell bleibt.
Ich klicke einfach auf „Schließen und anwenden“, um alle diese Schritte zu sperren.
Erstellen einer dynamischen Datumsabfragetabelle in LuckyTemplates: Ein Tutorial zum Abfrageeditor.
Einrichten eines dynamischen Startdatums und Enddatums für Power Query-Datumstabellen
mithilfe der Offset-Funktion in erweiterten Datumstabellen
Abschluss
Wie ich bereits erwähnt habe, wird ein eigener dynamischer Übungsdatensatz Ihr Können in Sachen LuckyTemplates definitiv verbessern. Es ermöglicht Ihnen, Ihre Fähigkeiten und Kenntnisse zu üben, während Sie so tun, als würden Sie an einem realen Szenario arbeiten.
Wenn Sie mehr darüber erfahren möchten, wie Sie Ihre Start- und Enddaten speziell für einen von Ihnen verwendeten Übungsdatensatz dynamisch gestalten, können Sie sich das LuckyTemplates-Forum ansehen. Es gibt dort viele Gespräche darüber und zu anderen relevanten Themen. Möglicherweise finden Sie sogar andere Ansätze, die für Sie funktionieren würden.
Alles Gute,
Melissa
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.