Ich habe vor einiger Zeit einen Beitrag darüber geschrieben, wie man aus kumulierten Jahreswerten (engl. Year-to-date Werten) Tageswerte zurückrechnen kann. Viele Systeme liefern Berichte in dieser Form und es gibt viele verschiedene Gründe – u. a. bei der Erstellung von Power BI-Datenmodellen – diese Werte auf Tagesbasis nutzen zu wollen. Im heutigen Beitrag beantworte ich die Frage eines meiner Leser (danke Hans-Ulrich), wie eine solche Aufgabenstellung gelöst werden kann, wenn die Daten – z. B. nach Hersteller – gruppiert sind. Daher zeige ich Dir im aktuellen Beitrag wie Du Tageswerte für gruppierte Daten aus kumulierten Werten berechnen kannst.
Als Abonnent meines Newsletters erhältst Du die Beispieldateien zu den Beiträgen dazu. Hier geht’s zum Abonnement des Newsletters!
Ausgangssituation und Ziel
Meine Ausgangssituation für diesen Beitrag ist die linke, blaue Tabelle. Mir liegen tagesbasierte Werte je Hersteller vor. Diese Werte sind jedoch leider nicht die Tageswerte, sondern kumulierte Werte. Dies bedeutet, dass der Wert 30 vom 02.01.2020 sich als Summe aus dem 01.01.2020 und dem 02.01.2020 zusammensetzt. Ich habe es nicht selten gesehen, dass Reports mit kumulierten Werte aus Systemen exportiert werden konnten. Sofern ich jedoch vor habe, diese Daten z. B. in Power BI, oder auch einer einfachen Exceltabelle zu analysieren, benötige ich die Tageswerte. Diese habe ich in der rechten, grünen Tabelle dargestellt.
Die Lösung zu dieser Problemstellung findest Du im Video 🙂
Lösung
Sie sehen gerade einen Platzhalterinhalt von YouTube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
In meinem Video erwähne ich meine Beiträge zu benutzerdefinierten Funktionen in Power Query/ M. Diese findest Du hier.
Anmerkung
In meinem Video habe ich vergessen zu erwähnen, dass die Sortierreihenfolge nur dann gesichert bestehen bleibt, wenn die sortierte Tabelle in eine Table.Buffer()
-Funktion geschachtelt wird. Dies habe ich in meiner Beispieldatei ergänzt. Vielen Dank an Adlerauge Imke 😉
Danke für Dein Interesse und bis zum nächsten Mal. Denk dran: Sharing is caring. Wenn Dir der Beitrag gefallen hat, dann teile ihn gerne. Falls Du Anmerkungen hast, schreibe gerne einen Kommentar, oder schicke mir eine Mail an lars@ssbi-blog.de
Viele Grüße aus Hamburg,
Lars
Lars ist Berater, Entwickler und Trainer für Microsoft Power BI. Er ist zertifizierter Power BI-Experte und Microsoft Trainer. Für sein Engagement in der internationalen Community wurde Lars seit 2017 jährlich durch Microsoft der MVP-Award verliehen. Lies hier mehr…
Marcus Wegener meint
Hey Lars,
cooles Video, wobei ich gerne auf die Verwendung von Funktionen verzichte.
Mein Lösungsweg wäre wie folgt:
Sortierung der Zeilen über Hersteller und Datum durchführen.
Table.Sort(#“Geänderter Typ“,{{„Hersteller“, Order.Ascending},{„Datum“, Order.Ascending}})
Dann bei der Zusammenführung der Abfragen die Verknüpfung über Hersteller & Index vornehmen.
Damit bist du fast 1:1 beim ersten Lösungsweg und es wird keine Funktion benötigt.
Beste Grüße
Marcus
Lars Schreiber meint
Hi Marcus,
absolut, mit Deiner Lösung kommst Du zum selben Ergebnis. Allerdings joine ich ungern über Texte (Hersteller), also müßte man hier dann noch eine Hersteller-ID mit einbauen, um das zu umgehen. Mir geht es hier im Wesentlichen um Folgendes: Was ich im Gespräch mit Power Query-Nutzern immer wieder feststelle ist, dass die wenigsten überhaupt von der Möglichkeit wissen, benutzerdefinierte Funktionen zu erstellen. Daher wollte ich hier einen Anwendungsfall zeigen. Davon abgesehen: Meine Lösung ist auch noch in anderer Art nicht optimal. Die Variante mit den Joins über Indexspalten kann bei größeren Datenmengen sehr langsam werden. Dafür hat Imke natürlich eine Lösung: https://www.thebiccountant.com/2018/07/12/fast-and-easy-way-to-reference-previous-or-next-rows-in-power-query-or-power-bi/ 🙂
Viele Grüße
Lars