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

Forumthread: Power Query Spalten aus Quelle einfügen

Power Query Spalten aus Quelle einfügen
16.02.2022 20:23:00
Andreas
Hallo und guten Abend.
Ich arbeite mich gerade in Power Query rein und komme schon relativ gut damit klar.
Meine Vorgehensweise bzw. Arbeitsschritte:
Vorgang 1:
*Daten abrufen aus Ordner (dort sind *.pdf Dateien enthalten)
*Die Dateinamen bestehen aus einer Kombination aus Zahlen (Avis-Nr) und Datum (Avis-Datum).
*Die Dateinamen lasse ich mir nach Trennzeichen trennen und entsprechend umbenennen, sowie nach Datum sortieren.
Vorgang 2:
*Dann wird der Inhalt der einzelnen Dateien weiterverarbeitet; da klappt alles so wie es soll.
Mein Problem: Ich will die zuvor generierten Spalten "Avis-Nr." und "Avis-Datum" zum verarbeiteten Inhalt hinzufügen.
Wie komme ich an diese Spalten heran ?
Bei den benutzerdefinierten Spalten werden nur die aktuell verwendeten Spalten des Inhaltes (Vorgang 2) aufgeführt und nicht die Spalten aus Vorgang 1.
Ich hoffe, man kann die Arbeitsschritte halbwegs nachvollziehen und jemand könnte mir da helfen.
LG Andreas
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Power Query Spalten aus Quelle einfügen
16.02.2022 20:40:09
ralf_b
ich sehe nur eine Beschreibung von Vorgängen. aber keine Arbeitsschritte.
AW: Power Query Spalten aus Quelle einfügen
17.02.2022 08:07:35
Andreas
Wenn es hilft, poste ich mal die Schritte, die PQ in der Bearbeitungsleiste anzeigt:
= Folder.Files("C:\Users\konie\OneDrive\Desktop\Avise")
= Table.RemoveColumns(Quelle,{"Extension"})
= Table.SplitColumn(#"Entfernte Spalten", "Name", Splitter.SplitTextByDelimiter("_", QuoteStyle.Csv) , {"Name.1", "Name.2"})
= Table.TransformColumnTypes(#"Spalte nach Trennzeichen teilen",{{"Name.1", Int64.Type}, {"Name.2", type text}})
= Table.RenameColumns(#"Geänderter Typ",{{"Name.1", "Avis-Nr"}})
= Table.ReplaceValue(#"Umbenannte Spalten",".pdf","",Replacer.ReplaceText,{"Name.2"})
= Table.TransformColumnTypes(#"Ersetzter Wert",{{"Name.2", type date}})
= Table.RenameColumns(#"Geänderter Typ1",{{"Name.2", "Avis-Datum"}})
= Table.Sort(#"Umbenannte Spalten1",{{"Avis-Datum", Order.Ascending}})
= Table.SelectRows(#"Sortierte Zeilen", each [Attributes]?[Hidden]? true)
= Table.AddColumn(#"Gefilterte ausgeblendete Dateien1", "Datei transformieren (6) ", each #"Datei transformieren (6)"([Content]))
= Table.SelectColumns(#"Benutzerdefinierte Funktion aufrufen1", {"Datei transformieren (6)"})
= Table.ExpandTableColumn(#"Andere entfernte Spalten1", "Datei transformieren (6) ", Table.ColumnNames(#"Datei transformieren (6)"(#"Beispieldatei (6)")))
[[Ab hier wird der Inhalt ausgewertet]]
Anzeige
AW sind nur Schritte in der Leere (ohne Datei) owT
17.02.2022 09:08:48
neopa
Gruß Werner
.. , - ...
AW: Power Query Spalten aus Quelle einfügen
17.02.2022 09:09:02
Andreas
Ich habe mich vielleicht etwas umständlich ausgedrückt:
Eigentlich will ich nur den Datei-Namen als Spalte einfügen.
AW: (D)eine (Beispiel)dateien könnte aufklären owT
17.02.2022 09:50:41
neopa
Gruß Werner
.. , - ...
Anzeige
AW: Power Query Spalten aus Quelle einfügen
18.02.2022 13:30:09
Andreas
Hallo Ralf.
Vielen Dank für den Link. Den Link habe ich tatsächlich bereits per Google gefunden, konnte aber so auf die Schnelle nix damit anfangen.
Heute habe ich mal frei ;-) und kann mich intensiver damit befassen und habe mich auch bereits etwas vorangearbeitet.
Also, der Blogbeitrag importiert ja csv Dateien, bei mir sind es pdf Dateien.
Ich habe also mal die PQ M Hilfe bemüht und den Code "Pdf.Tables...." gefunden und diesen als Benutzerdefinierte Spalte eingefügt.
Das funktioniert mit =Pdf.Tables(File.Contents("c:\hierstehtderpfadzumeinemordner\sample.pdf")) ganz gut und PQ zeigt mir in der hinzugefügten Spalte die Table's innerhalb des pdf an (so weit, so gut).
Allerdings kann ich im Pfad nur eine bestimmte Datei ansteuern (sample.pdf).
Ich möchte aber alle in dem Verzeichnis abgelegten pdf's ansteuern.
Mit * als Platzhalter bzw. "c:\hierstehtderpfadzumeinemordner\" wirft die Spalte einen Error aus.
Anzeige
AW: Power Query Spalten aus Quelle einfügen
18.02.2022 18:19:37
ralf_b
vielleicht versuchst du es mit folder.files() . Das sollte aber schon mit dem einlesen des Ordners passiert sein. Dann die unnötigen Dateien ausfiltern und die pdf's entpacken.
AW: Power Query Spalten aus Quelle einfügen
18.02.2022 19:38:04
Andreas
Danke.
Ich weiss zwar nicht wie, aber irgendwie habe ich mein gewünschtes Ergebnis zusammengewurschtelt.
Danke für die Tipps.
Anzeige
AW: Power Query Spalten aus Quelle einfügen
18.02.2022 19:41:54
Andreas
PQ hat die (manchmal unangenehme) Eigenschaft, eigenständig vermeindlich wichtige Zwischenschritte einzufügen, die das gewünschte Ergebnis verfälschen können.
AW: Power Query Spalten aus Quelle einfügen
18.02.2022 20:46:21
ralf_b
zeig doch mal deine Abfrage anonymisiert
AW: Power Query Spalten aus Quelle einfügen
19.02.2022 07:05:23
Andreas
Ich hoffe, es hilft:

let
Quelle = Folder.Files("c:\hier_steht_der_pfad_zum_ordner\"),
#"Entfernte Spalten" = Table.RemoveColumns(Quelle,{"Extension", "Date accessed", "Date modified", "Date created", "Attributes", "Folder Path"}),
#"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Entfernte Spalten", "Benutzerdefiniert", each Folder.Files("c:\hier_steht_der_pfad_zum_ordner")),
#"Entfernte Spalten1" = Table.RemoveColumns(#"Hinzugefügte benutzerdefinierte Spalte",{"Content"}),
#"Erweiterte Benutzerdefiniert" = Table.ExpandTableColumn(#"Entfernte Spalten1", "Benutzerdefiniert", {"Content"}, {"Benutzerdefiniert.Content"}),
#"Tiefer gestufte Header" = Table.DemoteHeaders(#"Erweiterte Benutzerdefiniert"),
#"Geänderter Typ" = Table.TransformColumnTypes(#"Tiefer gestufte Header",{{"Column1", type text}, {"Column2", type any}}),
#"Höher gestufte Header" = Table.PromoteHeaders(#"Geänderter Typ", [PromoteAllScalars=true]),
#"Geänderter Typ1" = Table.TransformColumnTypes(#"Höher gestufte Header",{{"Name", type text}, {"Benutzerdefiniert.Content", type binary}}),
#"Gefilterte ausgeblendete Dateien1" = Table.SelectRows(#"Geänderter Typ1", each [Attributes]?[Hidden]?  true),
#"Benutzerdefinierte Funktion aufrufen1" = Table.AddColumn(#"Gefilterte ausgeblendete Dateien1", "Datei transformieren (9)", each #"Datei transformieren (9)"([Benutzerdefiniert.Content])),
#"Erweiterte Datei transformieren (9)" = Table.ExpandTableColumn(#"Benutzerdefinierte Funktion aufrufen1", "Datei transformieren (9)", {"Beleg", "Ihr Beleg", "Datum", "Betrag"}, {"Datei transformieren (9).Beleg", "Datei transformieren (9).Ihr Beleg", "Datei transformieren (9).Datum", "Datei transformieren (9).Betrag"}),
#"Entfernte Spalten2" = Table.RemoveColumns(#"Erweiterte Datei transformieren (9)",{"Benutzerdefiniert.Content"}),
#"Neu angeordnete Spalten" = Table.ReorderColumns(#"Entfernte Spalten2",{"Datei transformieren (9).Beleg", "Datei transformieren (9).Ihr Beleg", "Datei transformieren (9).Datum", "Datei transformieren (9).Betrag", "Name"}),
#"Gefilterte Zeilen" = Table.SelectRows(#"Neu angeordnete Spalten", each [#"Datei transformieren (9).Beleg"]  "Gesamtsumme"),
#"Spalte nach Trennzeichen teilen" = Table.SplitColumn(#"Gefilterte Zeilen", "Name", Splitter.SplitTextByDelimiter("_", QuoteStyle.Csv), {"Name.1", "Name.2"}),
#"Geänderter Typ2" = Table.TransformColumnTypes(#"Spalte nach Trennzeichen teilen",{{"Name.1", Int64.Type}, {"Name.2", type text}}),
#"Umbenannte Spalten" = Table.RenameColumns(#"Geänderter Typ2",{{"Datei transformieren (9).Beleg", "Beleg"}, {"Datei transformieren (9).Ihr Beleg", "Ihr Beleg"}, {"Datei transformieren (9).Datum", "Datum"}, {"Datei transformieren (9).Betrag", "Betrag"}}),
#"Geänderter Typ3" = Table.TransformColumnTypes(#"Umbenannte Spalten",{{"Datum", type date}, {"Betrag", Currency.Type}}),
#"Umbenannte Spalten1" = Table.RenameColumns(#"Geänderter Typ3",{{"Name.1", "Avis-Nr"}, {"Name.2", "Avis-Datum"}}),
#"Ersetzter Wert" = Table.ReplaceValue(#"Umbenannte Spalten1",".pdf","",Replacer.ReplaceText,{"Avis-Datum"}),
#"Geänderter Typ4" = Table.TransformColumnTypes(#"Ersetzter Wert",{{"Avis-Datum", type date}, {"Beleg", Int64.Type}}),
#"Hinzugefügter Index1" = Table.AddIndexColumn(#"Geänderter Typ4", "Index.1", 1, 1, Int64.Type),
#"Entfernte Duplikate" = Table.Distinct(#"Hinzugefügter Index1", {"Beleg"})
in
#"Entfernte Duplikate"

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Power Query: Spalten aus Quelle einfügen


Schritt-für-Schritt-Anleitung

Um in Excel Power Query eine neue Spalte aus einer Quelle hinzuzufügen, befolge diese Schritte:

  1. Daten abrufen: Wähle "Daten" > "Daten abrufen" > "Aus Ordner" und wähle den gewünschten Ordner, der die Dateien enthält.
  2. Dateinamen verarbeiten: Nutze Folder.Files("Pfad\zum\Ordner"), um die Dateinamen abzurufen. Entferne unnötige Spalten mit Table.RemoveColumns.
  3. Spalten aufteilen: Teile die Dateinamen in separate Spalten (z.B. "Avis-Nr" und "Avis-Datum") mit Table.SplitColumn.
  4. Spalten umbenennen: Benenne die neuen Spalten um, z.B. mit Table.RenameColumns.
  5. Inhalt transformieren: Füge eine benutzerdefinierte Spalte hinzu, um den Inhalt der PDFs zu verarbeiten, z.B. mit Table.AddColumn.
  6. Spalten erweitern: Verwende Table.ExpandTableColumn, um die Inhalte der neuen Spalte anzuzeigen.
  7. Spalten zusammenführen: Füge die Spalten "Avis-Nr" und "Avis-Datum" zu den verarbeiteten Inhalten hinzu.

Hier ein Beispielcode für den Power Query Editor:

let
    Quelle = Folder.Files("C:\Pfad\zum\Ordner"),
    EntfernteSpalten = Table.RemoveColumns(Quelle, {"Extension"}),
    AufgeteilteSpalten = Table.SplitColumn(EntfernteSpalten, "Name", Splitter.SplitTextByDelimiter("_", QuoteStyle.Csv), {"Name.1", "Name.2"}),
    UmbenannteSpalten = Table.RenameColumns(AufgeteilteSpalten, {{"Name.1", "Avis-Nr"}, {"Name.2", "Avis-Datum"}})
in
    UmbenannteSpalten

Häufige Fehler und Lösungen

  • Fehler: Spalten nicht sichtbar: Wenn die Spalten aus Vorgang 1 nicht angezeigt werden, stelle sicher, dass du die richtigen Schritte im Power Query Editor befolgt hast und alle Schritte korrekt ausgeführt wurden.
  • Problem beim Hinzufügen der Spalte: Wenn du die neue Spalte nicht hinzufügen kannst, überprüfe, ob die Datenquelle korrekt verbunden ist und die Spaltennamen übereinstimmen.

Alternative Methoden

Eine alternative Methode zum Hinzufügen von Spalten ist, die Table.AddColumn Funktion zu verwenden, um benutzerdefinierte Berechnungen durchzuführen. Du kannst auch die Table.SelectRows Funktion nutzen, um nur bestimmte Zeilen auszuwählen, bevor du die neuen Spalten hinzufügst.


Praktische Beispiele

Ein praktisches Beispiel wäre das Hinzufügen des Dateinamens als Spalte. Mit Table.AddColumn kannst du den Dateinamen in eine neue Spalte einfügen:

= Table.AddColumn(Quelle, "Dateiname", each [Name])

Eine weitere nützliche Funktion ist Table.ExpandTableColumn, um mehrere Spalten aus einer Tabelle zu extrahieren und zu kombinieren.


Tipps für Profis

  • Nutze Tastenkombinationen im Power Query Editor, um deine Effizienz bei der Bearbeitung zu steigern.
  • Experimentiere mit benutzerdefinierten Funktionen in Power Query, um wiederkehrende Aufgaben zu automatisieren.
  • Bei der Arbeit mit großen Datenmengen kann es sinnvoll sein, leere Spalten zu entfernen, um die Ladezeiten zu optimieren.

FAQ: Häufige Fragen

1. Wie kann ich eine leere Spalte in Power Query hinzufügen? Du kannst eine leere Spalte in Power Query hinzufügen, indem du folgende Funktion verwendest:

= Table.AddColumn(Quelle, "Neue Spalte", each null)

2. Kann ich die Spalten nachträglich hinzufügen? Ja, du kannst Spalten nachträglich hinzufügen, indem du die Table.AddColumn Funktion im Power Query Editor verwendest, auch nach der Datenverarbeitung.

3. Wie kann ich das aktuelle Datum in eine Spalte einfügen? Verwende die Funktion DateTime.LocalNow() in einer benutzerdefinierten Spalte, um das aktuelle Datum zu erfassen:

= Table.AddColumn(Quelle, "Datum Heute", each DateTime.LocalNow())

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