Moin,
ich wollte es wissen: ich habe eine PQ-Abfrage auf die Webseite https://www.timeanddate.de/uhrzeit/ eingerichtet, die neben der Webabfrage ein paar Transformation vornimmt. Vorteil ist, dass aufgrund der stets aktuellen Uhrzeiten jede Minuten ein neues Ergebnis zu erwarten ist.
Diese Abfrage "DateAndTime" liefert ihre Ergebnis in der Tabelle "DateAndTime".
Darauf, also verkettet auf die Abfrage, habe ich eine minimalistische Abfrage "Tabelle_Erg", die nur 3 Zeiten aus der erste filtert. Auch mit Ausgabe. Ich kann unter Excel beide Abfragen einzel aktualisieren.
Wenn ich "Tabelle_Erg" aktualisiere, werden immer die neueste Uhrzeit angezeigt, spricht die vorangestellte Abfrage "DateAndTime" wird immer neu abgefragt. Die Herausgabe in der Tabelle "DateAndTime" ändert sich nicht. So muss es sein.
Um genauer zu testen habe ich die Ausgabenaktualisierung per VBA angestossen. 10 mal in Schleife, dabei die Durchschnittszeiten aufgenommen.
Wenn nur "DateAndTime" aktualisiert wird, dauert es ca. 0,55 Sek.
Wenn nur "Tabelle_Erg", ca. 0,59 Sek. Leicht länger, aber unwesentlich.
Wenn beide unmittelbar nacheinander aktualisiert werden, und zwar
einmal in der natürlichen Reihenfolge "DateAndTime" und "Tabelle_Erg"
und einmal umgekehrt "Tabelle_Erg" und "DateAndTime",
sind beide Zeiten auf dieselbe Höhe und entsprechen ca. die Summe der einzelnen.
Also es kommt -mMn- zu keinen Zeitpunkt zu einem lokalen Caching, wo "Tabelle_Erg" auf einem lokalen Zwischenspeicher der Ergebnis von "DateAndTime" zugreift und der Laufzeit damit optimiert.
Es ist natürlich nur oberflächlich und nicht wissenschaftlich geforscht. Aber die Richtung stimmt.
VG
Yal
Für die Powerqueristen, hier den M-Code zu der Abfrage:
let
Quelle = Web.Page(Web.Contents("https://www.timeanddate.de/uhrzeit/")),
Data0 = Quelle{0}[Data],
#"Geänderter Typ" = Table.TransformColumnTypes(Data0,{{"Column1", type text}, {"Column2", type text}, {"Column3", type text}, {"Column4", type text}, {"Column5", type text}, {"Column6", type text}, {"Column7", type text}, {"Column8", type text}, {"Column9", type text}, {"Column10", type text}, {"Column11", type text}}),
#"Zusammengeführte Spalten" = Table.CombineColumns(#"Geänderter Typ",{"Column2", "Column3"},Combiner.CombineTextByDelimiter(";", QuoteStyle.None),"Zusammengeführt"),
#"Zusammengeführte Spalten1" = Table.CombineColumns(#"Zusammengeführte Spalten",{"Column4", "Column5"},Combiner.CombineTextByDelimiter(";", QuoteStyle.None),"Zusammengeführt.1"),
#"Zusammengeführte Spalten2" = Table.CombineColumns(#"Zusammengeführte Spalten1",{"Column6", "Column7"},Combiner.CombineTextByDelimiter(";", QuoteStyle.None),"Zusammengeführt.2"),
#"Zusammengeführte Spalten3" = Table.CombineColumns(Table.TransformColumnTypes(#"Zusammengeführte Spalten2", {{"Column9", type text}}, "de-DE"),{"Column8", "Column9"},Combiner.CombineTextByDelimiter(";", QuoteStyle.None),"Zusammengeführt.3"),
#"Zusammengeführte Spalten4" = Table.CombineColumns(#"Zusammengeführte Spalten3",{"Column10", "Column11"},Combiner.CombineTextByDelimiter(";", QuoteStyle.None),"Zusammengeführt.4"),
#"Entfernte Spalten" = Table.RemoveColumns(#"Zusammengeführte Spalten4",{"Column1"}),
#"Entpivotierte Spalten" = Table.UnpivotOtherColumns(#"Entfernte Spalten", {}, "Attribut", "Wert"),
#"Entfernte Spalten1" = Table.RemoveColumns(#"Entpivotierte Spalten",{"Attribut"}),
#"Gefilterte Zeilen" = Table.SelectRows(#"Entfernte Spalten1", each ([Wert] > ";")),
#"Spalte nach Trennzeichen teilen" = Table.SplitColumn(#"Gefilterte Zeilen", "Wert", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), {"Ort", "Zeit"}),
#"Spalte nach Trennzeichen teilen1" = Table.SplitColumn(#"Spalte nach Trennzeichen teilen", "Zeit", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), {"Tag", "Zeit"}),
#"Geänderter Typ1" = Table.TransformColumnTypes(#"Spalte nach Trennzeichen teilen1",{{"Ort", type text}, {"Tag", type text}, {"Zeit", type time}}),
#"Aufgerufene benutzerdefinierte Funktion" = Table.AddColumn(#"Geänderter Typ1", "Datum_erzeugen", each Datum_erzeugen([Tag])),
#"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Aufgerufene benutzerdefinierte Funktion", "aktueller Zeit", each DateTime.From ( [Datum_erzeugen] & [Zeit]), type datetime),
#"Sortierte Zeilen" = Table.Sort(#"Hinzugefügte benutzerdefinierte Spalte",{{"Datum_erzeugen", Order.Ascending}, {"Zeit", Order.Ascending}}),
#"Entfernte Spalten2" = Table.RemoveColumns(#"Sortierte Zeilen",{"Tag", "Zeit", "Datum_erzeugen"})
in
#"Entfernte Spalten2"
und die Funktion "Datum_erzeugen":
let
Quelle = (Dat as text) => let
Quelle = Table.FromRecords( {
[Datum=Date.AddDays(Date.From(DateTime.FixedLocalNow()), -1)],
[Datum=Date.AddDays(Date.From(DateTime.FixedLocalNow()), 0)],
[Datum=Date.AddDays(Date.From(DateTime.FixedLocalNow()), 1)]
}),
Wochentag = Table.AddColumn(Quelle, "Wochentag", each Date.ToText([Datum], [Format="ddd", Culture="de-DE"])),
#"Gefilterte Zeilen" = Table.SelectRows(Wochentag, each ([Wochentag] = Dat)),
Datum = #"Gefilterte Zeilen"{0}[Datum]
in
Datum
in
Quelle