Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Dateiname in PQ Abfrage einfügen

Forumthread: Dateiname in PQ Abfrage einfügen

Dateiname in PQ Abfrage einfügen
11.02.2021 13:43:54
Christian
Hallo,
ich bitte um Eure Hilfe, weil ich an einem Punkt im PQ Editor nicht weiterkomme.
Ich habe mit Kombinieren - Abfrage anfügen die Inhalte von 2 CSV Dateien in einer Abfrage zusammengefügt.
Ist es möglich, irgendwie in der Spalte E, welche abgesehen von der Spaltenüberschrift leer ist, den Dateinamen der Ursprungsdatei der jeweiligen Zeile einzutragen, sodass man sieht, ob die jeweilige Zeile aus der ersten oder der zweiten Datei stammt?
Danke
Christian
Noch zur Info, hab Excel 2019, nicht 2016, jedoch kein Office 365.
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateiname in PQ Abfrage einfügen
11.02.2021 14:08:22
ChrisL
Hi Christian
Ja schon.
Vor dem Zusammenfügen eine benutzerdefinierte Spalte hinzufügen ="A.CSV" bzw. ="B.CSV"
Nach dem Zusammenfügen kannst du die zwei Spalten auch noch zu einer Zusammenfassen (bedingte Spalte hinzufügen WENN A="" Dann "B" sonst "A"
So ganz Blicke ich aber betr. deinen Absichten noch nicht durch, weil wenn ein Zusammenfügen mit Schlüssel möglich ist, dann kommt der Schlüssel auch in beiden Dateien vor und sonst wurde nicht Zusammengefügt.
Bei Bedarf lade eine vereinfachte Beispieldatei (die zwei CSV einfach als zwei Tabellen in der gleichen Mappe darstellen) und dein Wunschresultat aufzeigen.
cu
Chris
Anzeige
AW: Dateiname in PQ Abfrage einfügen
11.02.2021 18:21:07
Christian
Hallo Chris,
danke für den Tipp. Auf dem Weg klappt es.
Aber trotzdem mal eine Frage, ist es nicht möglich, das auch in die bereits bestehende, leere Spalte zu schreiben?
Danke
Christian
sorry hab deine Frage nicht beantwortet
11.02.2021 18:25:46
Christian
mein Problem war folgendes.
Die beiden CSV Dateien haben eine Indexspalte, in denen die Zeilen durchnummeriert sind, von 1 bis 10000.
Wenn ich nach dieser Spalte sortiere, hab ich die Reihenfolge 1,1,2,2,3,3, usw.
Ich wollte den DAteinamen lediglich als zusätzliches Sortierkriterium, dass ich auch nach erst die 10000 der ersten Datei, dann die 10000 der zweiten Datei sortieren kann.
Wenn du jetzt fragst, weshalb ich die Dateien dann überhaupt zusammengefügt habe, naja um andere Spalten z.B. die Daten in Spalte H Dateiübergreifend sortieren zu können.
Gruß
Christian
Anzeige
AW: sorry hab deine Frage nicht beantwortet
11.02.2021 22:22:07
Yal
Hallo Christian,
Du kannst auch eine neue Spalte mit dem Namen der Datei befüllen, die leere Spalte entfernen, die Dateinamenspalte umbenennen und an der richtige Stelle versetzen.
Aber eigentlich für deinen Zweck, muss es nicht unbedingt diese Spalte sein. In PQ muss man immer denken: so ist der Eingang, so soll der Ausgang, und dazwischen ist alles erlaubt. Zum Beispiel: anstatt Dateiname, "1" im ersten Datei-Abzug und "Z" im zweiten. Dann sortieren und Spalte vor dem Ausgeben entfernen.
Wenn es trotzdem so sein muss, geht mit einem Replace am schnellste. Der Trick ist daraus ein "ersetzt alles" zu machen: "neue Werte" in alle Zelle der Spalte 'SpalteName' (Achtung, spezieller Syntax!):
= Table.ReplaceValue(#"Vorige", each [SpalteName], "neue Werte", Replacer.ReplaceText,{"SpalteName"}) 

@ChrisL: hier war wohl "Anfügen" (UNION) gemeint, und nicht "Zusammenführen" (JOIN). Es wird leicht verwechselt.
VG
Yal
Anzeige
AW: sorry hab deine Frage nicht beantwortet
11.02.2021 22:33:08
Christian
Hallo Yal,
ich hoffe ich verstehe deinen Beitrag nicht falsch, aber m.e. macht das entfernen der Spalte wenig Sinn, da ich mir auch im Nachhinen die Möglichkeit offen lassen will, zu sortieren wie ich will.
Standardmäßig ist die Tabelle Dateiübergreifend nach dem schon benannten Datum sortiert.
Eine Sortierung nach Index benötige ich nur ca. 1mal die Woche um Änderungen an den Daten nachzuvollziehen.
D.h. ich habe vor zwischen Sortierungen für die ich den Dateinamen brauche und solchen für die ich ihn nicht brauche hin- und herzuwechseln.
Ich muss jedoch gestehen, wass du mir mit dem Replace sagen möchtest sind für mich leider absolute böhmische Dörfer. Ich weiß zwar was ich tun muss um die Zeile in den Quellcode einzufügen. Ich verstehe aber nur Bahnhof, wenn es darum geht, was diese Zeile bezwecken soll.
Gruß
Christian
Anzeige
AW: sorry hab deine Frage nicht beantwortet
12.02.2021 00:44:52
Yal
Hallo Christian,
(ich hatte eine supi ausführliche Antwort geschrieben aber Firefox ist abgestürzt. Daher jetzt nur eine kurze Version).
Vergiss meine Klugscheisserei. Es betrifft nur den Fall, wo Du alle Werte eine Spalte, die unterschiedlich wären, auf eine einzige Zielwert umlegen möchte. Trifft in dem Fall nicht.
Für dein Fall, da alle Zelle leer sind, reicht einen
= Table.ReplaceValue(#"Vorige", "", "Dateiname1", Replacer.ReplaceText,{"SpalteName"})
Es ist die Syntax für das Ersetzen "an der Stelle".
Bei einem Replace in eine neue Spalte sieht es (verständlicher) so aus:
= Table.AddColumn(#"Vorige1", "neueSpalte", each Text.Replace([alteSpalte], "alt", "neu"))
VG
Yal
Anzeige
AW: sorry hab deine Frage nicht beantwortet
12.02.2021 08:22:42
ChrisL
Hi
Die Funktion "Werte ersetzen" findest du übrigens auch im Menü Transformieren. Womöglich musst du null (anstelle "") durch Text ersetzen.
Der Gedanke UNION vs. JOIN ist mir auch schon gekommen. Daher hätte ich gerne mal eine kleine Beispieldatei gesehen. Vielleicht hätte sich dann auch der Sinn der ganzen Übung etwas mehr erschlossen, weil mir ist es nicht verständlich, wieso man in den Quelldaten eine leere Spalte erstellt, welche man später mit Daten bestückt. Es widerspricht meiner Denkweise zu Abfragen/Queries und auch in Bezug auf Performance denke ich bist du mit einer neuen Spalte besser dran.
cu
Chris
Anzeige
AW: sorry hab deine Frage nicht beantwortet
12.02.2021 16:42:40
Christian
Hallo Chris,
naja die Datenquelle der CSV Dateien stammt aus dem Internet. Auf der Seite kann man selbst Kommentare angeben, die in dieser Spalte stehen würden, wenn ich denn Kommentare gemacht hätte. Hab ich aber nicht, daher gibt es diese Leerspalte in den CSV Dateien.
Bsp. Datei muss ich mich jetzt dranmachen, künstlich was zu erstellen, die Orignaldateien sind zu groß (10000 Zeilen jeweils, 300 KB Grenze).
Gruß
Christian
Anzeige
AW: sorry hab deine Frage nicht beantwortet
12.02.2021 16:56:52
ChrisL
Hi Christian
OK, verstehe. Die Spalte ist gegeben. Trotzdem würde ich diese einfach löschen und nach Bedarf neue Spalten generieren. Im Resultat das Gleiche und vielleicht läuft die Abfrage dadurch minimal schneller.
Vielleicht bin ich da etwas pingelig, aber ein Datenfeld (Spalte) "Kommentare" hat eine andere Aussage, wie ein spezifisches Datenfeld "Dateinamen". Klar kann man auch ein Kommentarfeld für diese Zusatzinformation benutzen, daher ist mein Einwand sehr theoretisch und wenn es für dich so passt ist es auch OK.
cu
Chris
Anzeige
AW: sorry hab deine Frage nicht beantwortet
12.02.2021 16:59:31
Christian
Hallo Chris,
schau mal, hab jetzt ne Bsp Datei erstellt. (siehe anderer Beitrag)
Gruß
Christian
Beispieldatei
12.02.2021 16:58:37
Christian
Ich habe jetzt als Beispieldatei 2 csv Dateien mit je 3 Fußballern genommen.
Namen Fußballer 1 und Fußballer 2.
Diese habe ich im Blatt zusammengefügt 1. Sortierung zusammengefügt.
Mein Ziel war es, dieses Blatt auf zwei Wegen sortieren zu können.
Zum einen nach Spalte A, aber so, wie in dieser Tabelle, also zuerst die Zeilen, die aus Fußballer1 stammen, dann die Zeilen die aus Fußballer 2 stammen
Als auch so sortieren zu können wie im Blatt zusammengefügt 2. Sortierung, also nach Geburtsdatum, jedoch unabhängig davon aus welcher der beiden Dateien das ganze ursprünglich stammt.
Gruß
Christian
https://www.herber.de/bbs/user/143865.xlsx
Anzeige
AW: Beispieldatei
15.02.2021 08:47:05
ChrisL
Hi
Grundsätzlich hätte ich es so gemacht, wie in der Beispieldatei von dir dargestellt. Ein paar Duplikate wären noch zu löschen, aber sonst i.O.
Der Vollständigkeit halber, hier noch eine Lösung mittels Ersetzen:
https://www.herber.de/bbs/user/143922.xlsx
Zusätzlich habe ich mich damit beschäftigt, wie man den Namen der Quelldatei automatisch beziehen könnte, was eine hypothetische Fragestellung ist, weil in der von dir gezeigten Konstellation (fixe Verbindung zur Quelle) muss der Dateiname im Voraus bekannt sein. Eine Funktion im Stil GetFileName gibt es in PQ m.W. nicht. Entweder macht man eine Ordnerabfrage oder nachfolgend eine Lösung wo der Pfad und Dateinamen in benannten Zellen der Tabelle hinterlegt werden. Die Quellinformationen sind somit nur an einem Ort abgelegt und bei einer Änderung brauchts du nicht mehrfach (Quellen und Hilfsspalten) anzupassen.
https://www.herber.de/bbs/user/143924.xlsx
https://exceloffthegrid.com/power-query-source-cell-value/
cu
Chris
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Dateiname in Power Query Abfrage einfügen


Schritt-für-Schritt-Anleitung

  1. Power Query Editor öffnen: Starte Excel und lade die CSV-Dateien in Power Query.
  2. Benutzerdefinierte Spalte hinzufügen: Bevor Du die Dateien zusammenfügst, füge eine benutzerdefinierte Spalte hinzu, um den Dateinamen in die leere Spalte einzufügen. Verwende dazu die Formel:
    = Table.AddColumn(#"Vorige", "Dateiname", each "A.CSV")

    für die erste Datei und

    = Table.AddColumn(#"Vorige", "Dateiname", each "B.CSV")

    für die zweite Datei.

  3. Dateien zusammenfügen: Nutze die Funktion „Abfrage anfügen“, um die beiden Tabellen zu kombinieren.
  4. Spalten umbenennen: Nachdem die Abfragen zusammengefügt sind, kannst Du die Spalten umbenennen und anpassen.
  5. Leere Spalte entfernen (optional): Wenn Du die leere Spalte nicht mehr benötigst, kannst Du sie löschen.

Häufige Fehler und Lösungen

  • Leere Spalte bleibt leer: Wenn die leere Spalte nach dem Einfügen des Dateinamens weiterhin leer bleibt, stelle sicher, dass Du die korrekte Syntax verwendest. Verwende für leere Zellen:

    = Table.ReplaceValue(#"Vorige", "", "Dateiname1", Replacer.ReplaceText,{"SpalteName"})
  • Duplikate bei Sortierung: Wenn Du beim Sortieren der Daten Duplikate bekommst, überprüfe, ob die Indexspalte korrekt gesetzt ist. Du kannst Duplikate mit der Funktion „Duplikate entfernen“ in Power Query beseitigen.


Alternative Methoden

  • Leere Spalte hinzufügen: Falls Du eine leere Spalte nach dem Zusammenfügen der Daten hast und den Dateinamen dort hinzufügen möchtest, kannst Du die Funktion „Spalte hinzufügen“ verwenden, um die leere Spalte mit Werten zu befüllen.

  • Ersetzen von Werten: Eine andere Möglichkeit wäre, die Funktion „Werte ersetzen“ im Menü „Transformieren“ zu nutzen, um spezifische Werte zu ersetzen.


Praktische Beispiele

Ein Beispiel könnte so aussehen:

  • Du hast zwei CSV-Dateien mit den Namen „Fußballer1.csv“ und „Fußballer2.csv“. Zuerst fügst Du eine Spalte mit dem Namen der Datei hinzu:
    = Table.AddColumn(#"Vorige", "Dateiname", each if [Index] <= 10000 then "Fußballer1" else "Fußballer2")
  • Danach kannst Du die Daten nach dem Dateinamen oder anderen Spalten sortieren, um die gewünschte Reihenfolge zu erreichen.

Tipps für Profis

  • Namen dynamisch beziehen: Du kannst auch versuchen, den Dateinamen dynamisch zu beziehen, indem Du eine Ordnerabfrage erstellst, die alle Dateien in einem bestimmten Verzeichnis listet.
  • Performance optimieren: Reduziere die Anzahl der Spalten, die Du nicht benötigst, um die Performance Deiner Abfragen zu verbessern. Achte darauf, dass Du nur die Daten behältst, die Du tatsächlich benötigst.

FAQ: Häufige Fragen

1. Wie füge ich den Dateinamen in eine bestehende leere Spalte ein?
Du kannst die Funktion Table.ReplaceValue verwenden, um die leere Spalte mit dem gewünschten Dateinamen zu füllen.

2. Was mache ich, wenn ich Duplikate in der Sortierung habe?
Verwende die Funktion „Duplikate entfernen“ in Power Query, um sicherzustellen, dass Du die Daten in der gewünschten Reihenfolge hast.

3. Wie kann ich eine leere Spalte in Power Query hinzufügen?
Du kannst eine leere Spalte hinzufügen, indem Du die Funktion „Spalte hinzufügen“ verwendest und keine Werte angibst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige