Jump to content

Datensätze der letzten 45 Tage via PowerQuery in Excel abrufen


_Moritz_
Go to solution Solved by Jan F.,

Recommended Posts

In der Diskussion um die Möglichkeit, Datensätze über die API für einen bestimmten Zeitraum abrufen zu können stellte @Jens Mussler die Frage, wie in einer Excel-PowerQuery Datensätze der letzten 45 Tage abgerufen werden kann. Die Lösung hattest du  Jens – dann im weiteren Verlauf der Diskussion dann ja sogar bereits mitgeliefert...

Am 28.11.2022 um 18:42 schrieb Jens Mussler:

Habe in einer anderen Excel-Datei folgenden Quelle gefunden:

/Backend/preview/Smaps/{smapId}/Records?$filter=CompletedDate gt "&DateTime.ToText(Date.AddDays(DateTime.LocalNow(), -45), "yyyy-MM-ddT00:00:00Z")&"&accessToken={API-Token}"),

Die Lösung ist absolut tauglich:

  • Man baut sich einfach im Vorfeld die ganze URL zusammen, zunächst mit einem statischen Datum (so wie in der Swagger-API-Dokumentation zu finden).
  • Dann ersetzt man den Zeitstempel-Teil einfach durch obige Formeln, die mit Hilfe der Excel-Textverbinder (&) in die bestehende URL-integriert wird.

Es muss indes ggf. darauf geachtet werden, dass die Uhrzeit (00:00:00Z) eine UTC-Zeitangabe ist und entsprechend unserer Sommer-/Winterzeit auf die eigene Zeitzone angepasst werden muss/müsste (sofern beispielsweise alle Vorgänge sowieso immer erst um 8 Uhr beginnen, ist die UTC-Angabe natürlich vollkommen ausreichend).

Jens bat dennoch um weitere Hilfe, da die Umstellung nicht ganz einfach funktioniere. Tatsächlich ist es auch nicht ganz trivial, wenn man von dem regulären Datenabruf (über die v1_Web oder die interne API) auf den Abruf via Preview-API umstellt. Hintergrund ist, dass die Daten bei letzterer nicht als einfaches Array aus JSON-Objekten returniert wird.

Stattdessen wird das Resultat hier mit weiteren OData-Metadaten angereichert:

image.png.fcb151d3b8716fcb739f37660d893d02.png

Für den Excel-Abruf via PowerQuery hat das unmittelbare (und nach meiner Einschätzung auch unschöne) Auswirkungen: Da die Daten nicht wie gewohnt direkt als Array aus Objekten eingeht...

image.png.2df026f38b426465dcbcd99acd7ccfb7.png

... sondern nun zunächst ein Zwischenschritt zum Extrahieren der Liste aus dem Attribut "value" erforderlich ist...

image.png.778338788ee026919a3d04880498a1ae.png

... führt ein Klick auf "List" dazu, dass alle möglicherweise bereits ausgeführten Operationen/Transformationen mit den Daten hinfällig werden und neu aufgebaut werden müssen 😞

image.thumb.png.e5aa358926b32dda713054d2fc2b6830.png

Zumindest ist mir kein Trick bekannt, bei dem ich dies umgehen könnte. @Thomas Hoffmann und @Moritz Münzenmaier, ihr träumt doch üblicherweise Dienstag- bis Donnerstagnachts in PowerQuery-Syntax (🤪) — habt ihr eine Idee, wie man das geschmeidiger lösen könnte?

Ich hatte bereits einen Zwischenschritt eingefügt (Rechtsklick auf Quelle in den angewendeten Schritt und dann "Schritt danach einfügen"), aber auch dann führt das Extrahieren der Liste zum gleichen Ergebnis.

  • Like 2
Link to comment
Share on other sites

  • 2 weeks later...
  • 2 months later...
  • Solution

Über den Erweiterten Editor konnte ich den Schritt "Navigation" einfügen, ohne weitere Schritte zu entfernen.

Anders gesagt, ich konnte den  "/Backend/intern..."-Abruf durch den "/Backend/preview..."-Abruf ersetzen.

image.png.53cac8822d5d0065da01ed3261f4f227.png

 

Hier einmal der Abruf + einfache Formatierung mit Datensätzen über "/Backend/intern...":

image.thumb.png.2dfea05cb0a6456d06b5ea2b94c4ce61.png

 

Hier einmal der Abruf + einfache Formatierung über "/Backend/preview...":

image.thumb.png.e2a9bfd8213058fd327c1d4ec2c4497f.png

 

Zum Umstellen habe ich die URL ersetzt, die grüne Zeile (bzw. den Schritt "Navigation") eingefügt und in der folgenden Zeile #"Datensätze abgerufen" durch value ersetzt.

 

Und das wars auch schon.

 

image.png

  • Thanks 3
Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...