Registriert seit: 27.11.2017
Version(en): MS Office 365 Family
Hallo, frage zu Excel in Zusammenarbeit mit Powerquery: Kurze Erklärung - Ich sammle auf einem esp32 Energiedaten meines Hauses alle 15 Minuten als .txt Datei
- diese Datei lese ich in Excel mit Powerquery ein und die Daten werden in eine Excel Tabelle geschrieben
- Ich möchte nicht jedes mal die gesamte Datei einlesen, sondern nur die ab dem letzten Eintrag in der Tabelle
letzter Eintrag in der Excel Tabelle vom 05.01.2023 12:00
- also soll alles was schon da stand stehen bleiben
und alle Einträge aus der .txt ab 05.01.2023 12:15 in die Tabelle übernommen werden
- Letze Datenzeile in der .txt wäre z.B. 06.01.2023 08:30
- Somit wäre das die neue letzte Zeile in der Excel Tabelle und auch Grundlage zur nächsten Datenabfrage
Grundsätzlich funktioniert die Abfrage, nur werden mir immer alle Zeilen aus der Tabelle mit neueren Daten überschrieben, sodass ich immer nur maximal einen Tag in der Tabelle habe und nicht eine Tabelle habe die jeden Wert alle 15 Minuten hat eines Tages bzw. Monat oder Jahr hat. Ich hoffe ich konnte es gut erklären
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
06.01.2024, 11:39
(Dieser Beitrag wurde zuletzt bearbeitet: 06.01.2024, 11:41 von schauan.)
Hallöchen, eine (einfache) Lösung: hole die Daten auf einem anderen Blatt und kopiere die Zeile an die vorhandene Tabelle. Könnte man auch mit einem Makro unterstützen. ein (komplizierterer?) Ansatz: keep-the-existing-data-in-your-power-bi-dataset-and-add-new-data-to-it-using-incremental-refreshund noch einer: Import des Datensatzes mit einem Makro
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 25.11.2021
Version(en): 2019, 365
06.01.2024, 11:44
(Dieser Beitrag wurde zuletzt bearbeitet: 06.01.2024, 11:47 von Ralf A.)
(06.01.2024, 09:52)meierchen006 schrieb: [*]Ich möchte nicht jedes mal die gesamte Datei einlesen, sondern nur die ab dem letzten Eintrag in der Tabelle letzter Eintrag in der Excel Tabelle vom 05.01.2023 12:00 [*] Hi, auf das Einlesen hast Du keinen Einfluss. Es werden immer alle Daten der Quelle eingelesen. Nur auf die Schritte danach kannst Du Einfluss nehmen. Du könntest also danach den Maxwert von Datum und Zeit ermitteln und alle Zeilen bis dahin entfernen, ergibt aber keinen Sinn, weil Du die schon gemessenen Daten ja nicht entfernen willst. Allerdings könntest Du danach filtern...
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
Ciao, Ralf
Registriert seit: 26.09.2022
Version(en): 2019
Hi,
wenn du die Ergebnistabelle auch als Quelle definierst, und diese an die eigentliche Abfrage anfügst, dann noch Duplikat entferntst hast du dein gewünschtes Ergebnis. Bei einer Suche nach Selbstreferenzkette Poqeerquery-Abfrage müsstest du dazu fündig werden.
Viele Grüße derHoepp
Registriert seit: 25.11.2021
Version(en): 2019, 365
06.01.2024, 16:51
(Dieser Beitrag wurde zuletzt bearbeitet: 06.01.2024, 16:55 von Ralf A.)
..ändert jedoch nichts daran, dass die eigentliche Quelle trotzdem immer wieder komplett eingelesen wird... Der Effekt bei Deinem vorgeschlagenem Weg wären 2 Tabellen. Nicht wirklich ein Effizienzgewinn... bestenfalls eine im Grunde genommen überflüssige weil zusätzliche Schöhnheitsoperation... Alles,was Du in der 2. Tabelle machst, kannst Du auch gleich in der 1. erledigen, jedoch nicht alles, was in der 2. gemacht werden muss, ist in der 1. überhaupt notwendig...
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
Ciao, Ralf
Registriert seit: 27.11.2017
Version(en): MS Office 365 Family
Hallo, da es scheinbar keine einfache Lösung gibt, werde ich wie im Letzten Jahr dann wieder meine Daten wieder in eine zweite Tabelle kopieren, somit habe ich dann meine Datensammlung wie gewünscht.
Ich hätte gedacht es gäbe solch ein Menü ohne löschen der Daten (wie markiert) Trotzdem Danke an die die mir helfen wollten.
Registriert seit: 26.09.2022
Version(en): 2019
08.01.2024, 10:27
(Dieser Beitrag wurde zuletzt bearbeitet: 08.01.2024, 10:28 von derHoepp.)
Moin, ich glaube, dass mein Vorschlag genau das war, was du suchst und die Lösung auch recht einfach ist. Wenn ich das richtig verstanden habe, erhältst du aus einem Datenlogger eine Textdatei, die täglich überschrieben wird (in meinem Beispiel habe ich diese mal "TrackerExport.txt" genannt). Du möchtest in Excel nicht nur die jeweils aktuellen Werte, sondern auch die historischen Werte einlesen. Das funktioniert, in dem du einmalig die Liste mit Powerquery einliest, die Abfrage eindeutig benennst (in meinem Beispiel "TrackerData") und das Ergebnis der Abfrage als Tabelle in ein Arbeitsblatt lädst. Nachdem die Abfrage einmalig geladen wurde, kannst du diese einfach ergänzen, in dem du mit Table.Combine() die Daten aus genau dieser Abfrage noch einmal an den Inhalt der Textdatei anfügst. Mit Table.Distinct() schließt du dabei möglicherweise doppelte Sachverhalte aus. Bei mir sieht der zugehörige M-Code dabei so aus: Code: let CurrentSource = Csv.Document(File.Contents("C:\Daten\PQ\Tracker_Export.txt"),[Delimiter=",", Columns=2, Encoding=1252, QuoteStyle=QuoteStyle.None]), PromotedHeaders = Table.PromoteHeaders(CurrentSource, [PromoteAllScalars=true]), CurrentData = Table.TransformColumnTypes(PromotedHeaders,{{"TimeStamp", type datetime}, {"Value", Int64.Type}}), AddHistory = Table.Distinct(Table.Combine({CurrentData, Excel.CurrentWorkbook(){[Name="TrackerData"]}[Content]})) in AddHistory
Ich habe die einzelnen Schritte dabei etwas sprechender benannt. Viele Grüße derHöpp
|