Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Power Query - alte Werte behalten

Forumthread: Power Query - alte Werte behalten

Power Query - alte Werte behalten
14.03.2023 13:51:35
Excelbitionist
Liebe Forist:innen,
ich habe schon öfter hier nachgeschaut und gute Antworten auf Probleme gefunden, und wollte hiermit gleich einmal Danke sagen!
Heute habe ich ein Thema, welches ich zumindest so nicht gefunden habe und hoffe auf einen Hinweis, wie das zu beheben ist:
Ich habe mit PowerQuery eine Abfrage auf eine Seite mit Zinssätzen (https://www.newyorkfed.org/markets/reference-rates/sofr-averages-and-index). Dort werden aber immer nur die letzten 25 Werte abfragebereit zur Verfügung gestellt.
Ich habe nun im Wesentlichen zwei Probleme:
1. Da ich die Daten bspw. von Beginn des Jahres an in einer Tabelle haben möchte, könnte ich diese auf der o.g. Seite im unteren Bereich eingrenzen und abfragen und in Excel exportieren. Dann müsste ich das nur noch mit der (dynamischen) Abfrage verknüpfen. Das würde ich vielleicht sogar noch hinbekommen, aber damit kommen wir zu meinem weitaus größeren, zweiten Problem:
2. Wenn ich morgen abfrage, ist der erste Eintrag in der Liste (der nunmehr 26igletzte Eintrag) nicht mehr abrufbar. Auf die Art und Weise kann ich keine Historie aufbauen.
Meine Idee war, dass ich eine Kombination aus Werten (Historische Daten) habe, die bei jeder Abfrage um die Differenz (also die bislang noch nicht in der Tabelle enthaltenen Werte) ergänzt wird.
Ich habe das mit Append versucht, bin aber leider gescheitert.
Hat jemand eine Idee?
Vielen Dank im Voraus und viele Grüße
Excelbitionist
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Power Query - alte Werte behalten
14.03.2023 14:31:23
ChrisL
Hi
Wenn du mal auf XML drückst sieht du einen Link, welcher als Parameter startPosition=0 enthält. Wenn du den Parameter änderst, kannst du auch auf ältere Daten zugreifen.
z.B. https://www.youtube.com/watch?v=QHX_bb9OGe4
Somit musst du die alten Daten nicht speichern (wäre blöd, wenn du mal im Urlaub bist). Du holst dir einfach so viel Historie wie du gerne möchtest. Der Wert 500 in der Hauptabfrage lässt sich bei Bedarf noch erhöhen.
GetData
(index as number) as table =>
let
Quelle = Xml.Tables(Web.Contents("https://markets.newyorkfed.org/read?productCode=50&eventCodes=525&limit=25&startPosition=" & Text.From(index) & "&sort=postDt:-1&format=xml")),
    Table0 = Quelle{0}[Table],
    Table1 = Table0{0}[Table],
    #"Geänderter Typ" = Table.TransformColumnTypes(Table1,{{"effectiveDate", type date}, {"type", type text}, {"average30day", type number}, {"average90day", type number}, {"average180day", type number}, {"index", type number}})
in
    #"Geänderter Typ"
Hauptabfrage
let
    Quelle = List.Generate(() => 0, each _  500, each _ + 25),
    #"In Tabelle konvertiert" = Table.FromList(Quelle, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Aufgerufene benutzerdefinierte Funktion" = Table.AddColumn(#"In Tabelle konvertiert", "GetData", each GetData([Column1])),
    #"Erweiterte GetData" = Table.ExpandTableColumn(#"Aufgerufene benutzerdefinierte Funktion", "GetData", {"effectiveDate", "type", "average30day", "average90day", "average180day", "index", "revisionIndicator"}, {"effectiveDate", "type", "average30day", "average90day", "average180day", "index", "revisionIndicator"})
in
    #"Erweiterte GetData"
cu
Chris
Anzeige
AW: Power Query - alte Werte behalten
14.03.2023 14:41:45
Rudi
Hallo,
1. erstell dir eine PQ-Abfrage auf die vorhandene Tabelle und nenne sie 'alteDaten'. Nur Verbindung erstellen.
2. In 'Abfragen und Verbindungen' Rechtsklick auf 'alteDaten'. Anfügen und die Web-Abfrage als zweite Tabelle auswählen.
3. Spalte Date anklicken und unter Zeilen entfernen Duplikate entfernen auswählen.
4. Die neue Abfrage (Anfügen1 ?) ausführen.
5. Den Namen der neu erstellten Tabelle (wahrscheinlich 'Anfügen1') ermitteln und in der Abfrage 'alteDaten' im Schritt Quelle eintragen.
Alle Tabellen außer der letzten (Anfügen1) kannst/ solltest du jetzt löschen.
Gruß
Rudi
Anzeige
AW: Power Query - alte Werte behalten
15.03.2023 10:16:37
Excelbitionist
Lieber Chris,
lieber Rudi,
vielen Dank für die schnelle Hilfe und sorry für die späte Antwort meinerseits.
@Chris:
Ich habe überall gesucht, aber leider nicht gefunden wo ich auf XML klicken soll... Ich stehe glaube ich auf dem Schlauch, ich habe die Datei im Format xlsx erstellt und nicht mit Makros.
Oder meinst Du den erweiterten Editor (analog zum von Dir verlinkten Video)? In dem Fall sind leider keine Parameter zu sehen, lediglich die Anpassungen, die ich vorgenommen habe:
let
Quelle = Web.Page(Web.Contents("https://www.newyorkfed.org/markets/reference-rates/sofr-averages-and-index")),
Data0 = Quelle{0}[Data],
#"Sortierte Zeilen" = Table.Sort(Data0,{{"DATE", Order.Ascending}}),
#"Geänderter Typ" = Table.TransformColumnTypes(#"Sortierte Zeilen",{{"DATE", type text}, {"30-DAY AVERAGE (%)", type number}, {"90-DAY AVERAGE (%)", type number}, {"180-DAY AVERAGE (%)", type number}, {"INDEX", type number}}),
Divisionsspalte = Table.TransformColumns(#"Geänderter Typ", {{"30-DAY AVERAGE (%)", each _ / 100000, type number}}),
Divisionsspalte1 = Table.TransformColumns(Divisionsspalte, {{"90-DAY AVERAGE (%)", each _ / 100000, type number}}),
Divisionsspalte2 = Table.TransformColumns(Divisionsspalte1, {{"180-DAY AVERAGE (%)", each _ / 100000, type number}}),
Divisionsspalte3 = Table.TransformColumns(Divisionsspalte2, {{"INDEX", each _ / 100000000, type number}}),
#"Geänderter Typ mit Gebietsschema" = Table.TransformColumnTypes(Divisionsspalte3, {{"DATE", type date}}, "en-US"),
#"Angefügte Abfrage" = Table.Combine({#"Geänderter Typ mit Gebietsschema", #"Geänderter Typ mit Gebietsschema"}),
#"Entfernte Duplikate" = Table.Distinct(#"Angefügte Abfrage", {"DATE"})
in
#"Entfernte Duplikate"
Ich hatte lediglich den von mir genannten Link als Quelle (Daten->neue Abfrage ->andere Quellen->aus dem Web angelegt und damit nur den oberen Teil auf der Zielseite abfragen können, auf den unteren Part bei der FED-Seite (auf der man ein Datum eingeben kann) kam ich nicht drauf).
@Rudi:
Ich bin leider nicht im Homeoffice und aufgrund der Firewall-Einstellungen (proxy meldet '407') kann ich den Abruf frühestens heute Abend wieder zuhause testen.
Ich bräuchte aber dennoch ja irgendwie die Daten von einem bestimmten Startzeitpunkt aus (unabh. davon, ob für zukünftige Abfragen die alten (und nicht mehr in der neuen Abfrage enthaltenen) Daten erhalten bleiben.
Vielen Dank und viele Grüße
Joe
Anzeige
AW: Power Query - alte Werte behalten
15.03.2023 10:27:39
ChrisL
Hi
In dem von dir angegebenen Link, rechts oben vom Tabellenbereich, "Export to:"
Bei der Gelegenheit fällt mir auf, dass der Link nicht nur die startPosition als Parameter hat, sondern mittels Anpassung von limit kannst du gleich alle Daten beziehen. Meine PQ von vorhin brauchst du daher nicht mehr.
https://markets.newyorkfed.org/read?productCode=50&eventCodes=525&limit=25&startPosition=0&sort=postDt:-1&format=xlsx
z.B. geht zurück bis ins Jahr 2020
https://markets.newyorkfed.org/read?productCode=50&eventCodes=525&limit=10000&startPosition=0&sort=postDt:-1&format=xlsx
cu
Chris
Anzeige
AW: Power Query - alte Werte behalten
15.03.2023 11:42:28
Excelbitionist
Hi Chris,
vielen Dank - jetzt hab ich es (hoffentlich) verstanden. Leider kann ich das im Firmennetzwerk nicht ausprobieren, werde das aber heute Abend versuchen. Mit der Anpassung des Limits habe ich ja 'genug Reserve', von daher sollte das 'Problem', dass alte und ggf. noch benötigte Werte nicht mehr verfügbar sind, obsolet sein.
Und wenn nicht versuche ich mich mal mit einer Kombination Deines und Rudi's Ansatzes.
Vielen Dank einstweilen schon einmal und viele Grüße
Joe
Anzeige
AW: Power Query - alte Werte behalten
16.03.2023 10:48:08
Excelbitionist
Lieber Chris,
grundsätzlich funktioniert das sehr gut, die Abfrage liefert die letzten x Treffer.
Allerdings kommt jetzt beim Aktualisieren der bestehenden Abfrage in meiner Datei (in der ich ja die Abfragewerte noch weiterverarbeite) nun ein Fenster mit der Frage, ob ich die Datei öffnen oder speichern möchte.
Das Ergebnis ist dann, dass die Abfrage in einer neuen Datei geöffnet wird (und nicht in meiner vorhandenen Datei).
Hast Du hierfür vielleicht auch noch eine Idee?
Danke vorab und viele Grüße
Joe
Anzeige
AW: Power Query - alte Werte behalten
16.03.2023 18:16:35
ChrisL
Hi
Dann nimm das XML Format.
cu
Chris
;
Anzeige

Infobox / Tutorial

Power Query: Alte Werte Behalten


Schritt-für-Schritt-Anleitung

  1. Datenquelle vorbereiten: Öffne Power Query in Excel und erstelle eine neue Abfrage, indem du die URL von der Seite mit den Zinssätzen eingibst:

    https://www.newyorkfed.org/markets/reference-rates/sofr-averages-and-index
  2. XML-Format nutzen: Um auf ältere Daten zuzugreifen, ändere den Link, indem du den Parameter startPosition anpasst. Du kannst auch die limit-Einstellung erhöhen, um mehr Daten abzurufen. Hier ein Beispiel:

    https://markets.newyorkfed.org/read?productCode=50&eventCodes=525&limit=10000&startPosition=0&sort=postDt:-1&format=xml
  3. Web-Abfrage erstellen: Füge die oben angepasste URL in Power Query ein und klicke auf „Daten abrufen“. Damit erhältst du die Daten im XML-Format.

  4. Daten transformieren: Nutze die Funktionen in Power Query, um die Daten zu sortieren und die Datentypen anzupassen. Achte darauf, dass das Datum korrekt formatiert ist.

  5. Alte Daten anfügen: Erstelle eine zweite Abfrage für deine historischen Daten. Klicke mit der rechten Maustaste auf „alteDaten“ und wähle „Anfügen“. Füge die Web-Abfrage als zweite Tabelle hinzu.

  6. Duplikate entfernen: Klicke auf die Datenspalte und wähle unter „Zeilen entfernen“ die Option „Duplikate entfernen“.

  7. Abfrage speichern: Führe die neue Abfrage aus und speichere das Ergebnis in deiner Excel-Datei.


Häufige Fehler und Lösungen

  • XML-Format nicht sichtbar: Stelle sicher, dass du die richtige URL verwendest. Der Link muss das XML-Format unterstützen, sonst kannst du die alten Daten nicht abrufen.

  • Abfrage öffnet sich in neuer Datei: Wenn beim Aktualisieren der Abfrage ein Fenster erscheint, in dem du die Datei öffnen oder speichern sollst, überprüfe die Einstellungen in Power Query. Stelle sicher, dass die Abfrage direkt in deiner Arbeitsmappe gespeichert wird.


Alternative Methoden

  • Verwendung von VBA: Du kannst auch eine VBA-Lösung in Excel verwenden, um die Daten zu importieren und die Historie zu speichern. Dies erfordert jedoch etwas Programmierkenntnisse.

  • Direkter Export: Du kannst die Daten auch direkt von der Webseite im Excel-Format exportieren, indem du die „Export to”-Option nutzt. Dadurch erhältst du alle verfügbaren Daten auf einmal.


Praktische Beispiele

Hier ist ein Beispiel für eine Power Query-Abfrage, die auf die XML-Daten zugreift:

let
    Quelle = Xml.Tables(Web.Contents("https://markets.newyorkfed.org/read?productCode=50&eventCodes=525&limit=10000&startPosition=0&sort=postDt:-1&format=xml")),
    Table0 = Quelle{0}[Table],
    Table1 = Table0{0}[Table],
    #"Geänderter Typ" = Table.TransformColumnTypes(Table1,{{"effectiveDate", type date}, {"type", type text}, {"average30day", type number}, {"average90day", type number}, {"average180day", type number}, {"index", type number}})
in
    #"Geänderter Typ"

Tipps für Profis

  • Parameter anpassen: Nutze Parameter in Power Query, um die Abfrage dynamisch zu gestalten. So kannst du schnell zwischen verschiedenen Zeiträumen wechseln.

  • Regelmäßige Aktualisierung: Plane die Abfrage so, dass sie regelmäßig aktualisiert wird. Dies kannst du unter den Abfrageeinstellungen festlegen.


FAQ: Häufige Fragen

1. Wie oft sollte ich die Daten aktualisieren?
Es hängt von deinen Bedürfnissen ab. Eine wöchentliche oder monatliche Aktualisierung ist oft ausreichend.

2. Kann ich auch andere Datenquellen nutzen?
Ja, du kannst Power Query mit verschiedenen Datenquellen verwenden, darunter Datenbanken, Excel-Dateien oder auch andere Web-APIs.

3. Was tun, wenn ich keine Verbindung zur Datenquelle herstellen kann?
Überprüfe deine Internetverbindung und die URL, um sicherzustellen, dass sie korrekt ist. Eventuell benötigst du auch spezifische Berechtigungen im Unternehmensnetzwerk.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige