Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1812to1816
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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.

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
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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen