Ewiger Feiertagskalender – POTW #12 (Power Query Solution)

Ewiger Feiertagskalender – POTW #12 (Power Query Solution)

In diesem Blogbeitrag werden wir meine Lösung für untersuchen . Für diese Herausforderung haben wir LuckyTemplates‘ erste Herausforderung „Problem der Woche“ noch einmal aufgegriffen, bei der wir einen ewigen Feiertagskalender aus einer Mischung spezifischer und relativer Daten erstellt haben. Aber dieses Mal werden wir nur Power Query verwenden . Das vollständige Video dieses Tutorials können Sie unten in diesem Blog ansehen.

Ewiger Feiertagskalender – POTW #12 (Power Query Solution)

Wenn Sie bei der eigentlichen Problemaufschlüsselung nicht weiterkommen, können Sie die noch einmal durchgehen , um zu sehen, ob einer der Ansätze Elemente enthält, die Ihnen bei dieser Herausforderung helfen können.

Ewiger Feiertagskalender – POTW #12 (Power Query Solution)

Beim Lesen der Einsendungen habe ich eine Mischung aus Leuten gesehen, die die Benutzeroberfläche nutzten und benutzerdefinierte Funktionen schrieben , um einen ewigen Kalender zu erstellen. Es hat Spaß gemacht, jeden Eintrag zu analysieren, und wenn Sie sich inspirieren lassen möchten, empfehle ich Ihnen, dasselbe zu tun.

Als ich dieses Szenario selbst durchgearbeitet habe, habe ich letztendlich mehrere Lösungen entwickelt. Das, für das ich mich entschieden habe, veranschaulicht am besten, wie man ein Problem nicht nur in kleinere Teile zerlegen , sondern diese auch sichtbar machen kann . Dies ist sehr hilfreich, wenn ein Fehler oder unerwartete Ergebnisse auftreten.

Inhaltsverzeichnis

Der Ausgangspunkt für die Erstellung eines ewigen Kalenders

Dieser rohe Feiertagstisch ist unser Ausgangspunkt. Um ein Datum zusammenzusetzen, benötigen wir für bestimmte Daten ein Jahr, einen Monat und einen Tag. Es fehlt nur noch die Jahreszahl.

Ewiger Feiertagskalender – POTW #12 (Power Query Solution)

Aber für relative Daten müssen wir etwas mehr Arbeit leisten. Zunächst müssen wir diese Tagesspalte sowohl in die Zahl als auch in den Wochentag aufteilen. Sehen wir uns diese Schritte noch einmal an.

Abrufen der Jahre aus der Datumstabelle

Um diese Lösung dynamisch zu gestalten, werde ich die Jahre aus der Datumstabelle abrufen . In der Bearbeitungsleiste sehen Sie, dass ich eine Projektion verwendet habe, um eine einspaltige Tabelle aus meiner Datumstabelle zu erhalten. Dies wird natürlich Duplikate enthalten. Um diese zu entfernen, habe ich Table.Distinct hinzugefügt .

Ewiger Feiertagskalender – POTW #12 (Power Query Solution)

Wenn ich auf den weißen Bereich neben einer dieser Tabellen klicke, sehen Sie auch eine Liste mit den einzelnen Jahren, die in meiner Datumstabellenabfrage vorhanden sind.

Ewiger Feiertagskalender – POTW #12 (Power Query Solution)

Uns wurde ein Monatsname gegeben , wir benötigen jedoch tatsächlich eine Monatsnummer . Wenn wir nun ein Jahr mit einem Monatsnamen verketten, können wir die Funktion „Date.From“ verwenden , um den ersten Tag dieses Monats als Datumswert zurückzugeben.

Durch das Hinzufügen von Date.Month bleibt uns nur noch die Monatszahl für dieses bestimmte Datum. Für Januar wird eine 1 zurückgegeben. Für Februar wird eine 2 zurückgegeben und so weiter.

Ewiger Feiertagskalender – POTW #12 (Power Query Solution)

Abrufen der Zahl aus der Tagesspalte

Um die Zahl aus der Tagesspalte zu erhalten, haben wir uns entschieden, die Spalte nicht zu teilen und stattdessen den Wert zu extrahieren. Wie Sie in der Bearbeitungsleiste sehen können, haben wir Text.BeforeDelimiter verwendet und dieses Leerzeichen verwendet, um den rechten und linken Teil dieser Textzeichenfolge zu identifizieren.

Ewiger Feiertagskalender – POTW #12 (Power Query Solution)

Wenn kein Platz vorhanden ist, möchten wir alles zurückgeben, was in der Tagesspalte übrig bleibt. Für den ersten Datensatz wird also eine 1 zurückgegeben. Für den zweiten Datensatz, der dieses Leerzeichen enthält, wird der erste Teil der Textzeichenfolge zurückgegeben, das Wort Third .

Ewiger Feiertagskalender – POTW #12 (Power Query Solution)

Wir werden einen ähnlichen Ansatz verwenden, um den Datumsnamen zu erhalten, verwenden jedoch die Funktion List.PositionOf . Dies gibt den nullbasierten Offset des Werts in der als erstes Argument übergebenen Liste zurück und gibt -1 zurück, wenn der Wert nicht in dieser Liste erscheint.

Ewiger Feiertagskalender – POTW #12 (Power Query Solution)

Für den ersten Datensatz wird der Wert 1 übergeben, der in unserer Liste nicht vorhanden ist. Aus diesem Grund wird der Wert -1 zurückgegeben. Für den zweiten Datensatz wird der Wert Monday zurückgegeben .

Es übergibt das an unsere Funktion und gibt eine 1 zurück, da es das zweite Element in unserer Liste ist. Als Nächstes ersetzen wir alle -1-Werte durch einen Nullwert .

Ewiger Feiertagskalender – POTW #12 (Power Query Solution)

Zu diesem Zeitpunkt haben wir alle Bausteine ​​erstellt, die wir zum Aufrufen der benutzerdefinierten Funktion benötigen.

Aufrufen der benutzerdefinierten Funktion für den ewigen Feiertagskalender

In der Formelleiste können wir sehen, dass die Funktion vier Argumente akzeptiert: ein Jahr , einen Monat , eine Zahl und einen Wochentag .

Ewiger Feiertagskalender – POTW #12 (Power Query Solution)

Aber wie wird dieser Datumswert bestimmt? Wir verwenden List.PositionOf erneut, um einen numerischen Wert für die Zahl zu erhalten. Wir haben eine Liste mit dem ersten, zweiten, dritten und vierten. Wenn wir die Zahl an List.PositionOf übergeben , wird der auf Null basierende Offset zurückgegeben.

Ewiger Feiertagskalender – POTW #12 (Power Query Solution)

Auch hier gilt: Wenn ein Wert nicht vorhanden ist, wird -1 zurückgegeben. Für den ersten Datensatz übergeben wir also den Wert 1. 1 ist in dieser Liste nicht vorhanden, weshalb sie den Wert -1 zurückgibt. Für den zweiten Datensatz übergeben wir den Wert Third, das dritte Element in unserer Liste. Dies gibt den Wert 2 zurück.

Erstellen einer Liste mit Terminen

Lassen Sie uns nun eine Liste mit Daten erstellen. Wir bestimmen das Startdatum für diesen Monat, bestimmen die Anzahl der Tage in diesem Monat und verwenden List.Dates , um eine Liste mit allen Tagen in diesem Monat zu erstellen.

Ewiger Feiertagskalender – POTW #12 (Power Query Solution)

Als nächstes verwenden wir List.Select, um nur die Daten beizubehalten, die an einem bestimmten Wochentag liegen.

Ewiger Feiertagskalender – POTW #12 (Power Query Solution)

Wenn wir auf die Seite neben einer dieser Listen klicken, sehen wir, dass sie nur diese vier Elemente enthält.

Ewiger Feiertagskalender – POTW #12 (Power Query Solution)

Anwenden bedingter Logik

Abschließend wenden wir bedingte Logik an, um ein Datum zu erstellen oder abzurufen. Wenn der Wochentag null ist , was bedeutet, dass wir ein bestimmtes Datum haben, können wir das intrinsische #date verwenden , um einen Datumswert zu erstellen.

Ewiger Feiertagskalender – POTW #12 (Power Query Solution)

Wenn die Zahl dem letzten Wert entspricht, können wir die Funktion List.Reverse verwenden , um die Reihenfolge in der Liste umzukehren und den ersten Wert zu extrahieren.

Ewiger Feiertagskalender – POTW #12 (Power Query Solution)

Wenn wir diese aufsteigende Reihenfolge in absteigend ändern möchten, können wir jederzeit das letzte Datum aus diesem Datumsbereich extrahieren. Es spielt keine Rolle, ob die Liste vier oder fünf Elemente enthält. Durch Umkehren der Bestellung und Herausnehmen des ersten Artikels haben wir immer das letzte Datum.

Ewiger Feiertagskalender – POTW #12 (Power Query Solution)

Für alle anderen Fälle verwenden wir List.Skip .

Ewiger Feiertagskalender – POTW #12 (Power Query Solution)

Wir können den Wert basierend auf dieser Position in der Liste extrahieren. Für den Erntedankfesttag ist die Zahl viert, und viert gibt eine 3 zurück. Dadurch werden die ersten drei Werte in der Liste übersprungen und immer das vierte Element zurückgegeben.

Ewiger Feiertagskalender – POTW #12 (Power Query Solution)

Fassen wir alles zusammen und gehen wir zur Lösungsabfrage. Für den Quellschritt rufen wir die RAW-Feiertagstabelle auf. Als Nächstes fügen wir eine Spalte hinzu, die eine Liste mit Datumsangaben zurückgibt.

Ewiger Feiertagskalender – POTW #12 (Power Query Solution)

Überprüfung des M-Codes für den ewigen Feiertagskalender

Lassen Sie uns den M-Code für die Spalte überprüfen. Für jede Zeile in der Tabelle haben wir eine Tabelle verschachtelt, die die unterschiedlichen Jahre aus der Datumstabelle enthält. Dann haben wir die Werte in dieser Jahresspalte transformiert, indem wir die benutzerdefinierte Funktion aufgerufen haben.

Ewiger Feiertagskalender – POTW #12 (Power Query Solution)

Um die benutzerdefinierte Funktion aufrufen zu können, müssen wir natürlich zunächst einige Einstellungen vornehmen. Wir müssen die Monatszahl , den Zahlenwert und natürlich den Wochentag ermitteln . Dann haben wir aus dieser verschachtelten Tabelle die Liste mit Datumsangaben geführt.

Ewiger Feiertagskalender – POTW #12 (Power Query Solution)

Wenn wir im Leerraum zur Seite klicken, können wir unten eine Vorschau dieser Liste sehen.

Ewiger Feiertagskalender – POTW #12 (Power Query Solution)

Der nächste Schritt besteht darin, diese Liste zu erweitern und CelebratedOnDate hinzuzufügen .

Ewiger Feiertagskalender – POTW #12 (Power Query Solution)

Dies ist die Logik, die wir bei dieser Berechnung verwendet haben: Wenn das Datum auf einen Samstag fällt, subtrahieren wir einen Tag, sodass wir auf einem Freitag landen. Wenn es ein Sonntag ist, fügen wir einen Tag hinzu, um auf einem Montag zu landen. Wenn es kein Samstag oder Sonntag ist, dann wollen wir eine Null.

Ewiger Feiertagskalender – POTW #12 (Power Query Solution)

Der letzte Schritt besteht schließlich darin, die Typen zu ändern.

Ewiger Feiertagskalender – POTW #12 (Power Query Solution)

Abschluss

Nur eine kurze Erinnerung daran, dass eine fortlaufende Serie ist, die jeden 1. und 3. Mittwoch im LuckyTemplates-Forum stattfindet. Das in der ersten Woche veröffentlichte Problem erfordert eine DAX-basierte Lösung, während das Problem der dritten Woche eine auf Power Query basierende Lösung erfordert.

Wenn Ihnen der in diesem POTW behandelte Inhalt gefallen hat, abonnieren Sie bitte den TV-Kanal LuckyTemplates, um mehr zu erfahren. Wir veröffentlichen ständig eine große Menge an Inhalten von mir selbst und einer Reihe von Inhaltserstellern, die sich alle dafür einsetzen, die Art und Weise zu verbessern, wie Sie LuckyTemplates und die Power Platform nutzen.

Melissa


Streudiagramm-Visualisierungen mit Charticulator

Streudiagramm-Visualisierungen mit Charticulator

In diesem Tutorial erfahren Sie, wie Sie mit Charticulator eine Streudiagramm-Visualisierung für Ihren LuckyTemplates-Bericht erstellen und entwerfen.

PowerApps-Suchfeld: So fügen Sie es hinzu und passen es an

PowerApps-Suchfeld: So fügen Sie es hinzu und passen es an

Erfahren Sie, wie Sie ein PowerApps-Suchfeld von Grund auf erstellen und es an das Gesamtthema Ihrer App anpassen.

Power Automate String-Funktionen: Substring und IndexOf

Power Automate String-Funktionen: Substring und IndexOf

Erlernen Sie ganz einfach zwei komplizierte Power Automate String-Funktionen, die in Microsoft Flows verwendet werden können – die Funktionen substring und indexOf.

Power Query M: Abwechselndes 0-1-Muster in der Datumstabelle

Power Query M: Abwechselndes 0-1-Muster in der Datumstabelle

Dieses Tutorial konzentriert sich auf die Power Query M-Funktion „number.mod“, um ein abwechselndes 0-1-Muster in der Datumstabelle zu erstellen.

Prognosetechnik: Erkundung der Prognoselogik in LuckyTemplates-Modellen

Prognosetechnik: Erkundung der Prognoselogik in LuckyTemplates-Modellen

In diesem Tutorial führe ich eine Prognosetechnik durch, bei der ich meine tatsächlichen Ergebnisse mit meinen Prognosen vergleiche und sie kumulativ betrachte.

Speichern Sie E-Mail-Anhänge in SharePoint mit Power Automate

Speichern Sie E-Mail-Anhänge in SharePoint mit Power Automate

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.

Führen Sie eine Bis-Loop-Steuerung in Power Automate durch

Führen Sie eine Bis-Loop-Steuerung in Power Automate durch

Erfahren Sie, wie die Do Until Schleifensteuerung in Power Automate funktioniert und welche Schritte zur Implementierung erforderlich sind.

Berechnen eines gleitenden Durchschnitts in LuckyTemplates mithilfe von DAX

Berechnen eines gleitenden Durchschnitts in LuckyTemplates mithilfe von DAX

In diesem Tutorial erfahren Sie, wie Sie mithilfe der ALLSELECTED-Funktion einen dynamischen gleitenden Durchschnitt in LuckyTemplates berechnen können.

Berechnen Sie dynamisch eine laufende oder kumulative LuckyTemplates-Summe

Berechnen Sie dynamisch eine laufende oder kumulative LuckyTemplates-Summe

Durch diesen Artikel erhalten wir ein klares und besseres Verständnis für die dynamische Berechnung einer laufenden oder kumulativen Gesamtsumme in LuckyTemplates.

Power Automate auf jede Aktion in Workflows anwenden

Power Automate auf jede Aktion in Workflows anwenden

Erfahren und verstehen Sie die Bedeutung und ordnungsgemäße Verwendung der Power Automate-Aktionssteuerung „Auf jede anwenden“ in unseren Microsoft-Workflows.