PQ - parametrisiert auf int. Tabellen
#41
Hallo Warkins,

Zitat:Ich werde sie in logisch benannte Zwischenschritte aufteilen, ...
und dann das:result = Table.Combine(List.Transform(
                        List.Zip({validTables[Tabelle], validTables[Name]}),
                        each Table.AddColumn(_{0}, "Dateiname", (x) => _{1})
                    ))
Da muß die KI aber noch mal nachschärfen.

Bei mir sieht das so aus:
LoadTableFromFiles = (folderPath as text, tableName as text) =>
        let
            files = Folder.Files(folderPath),
            filesWithContent = Table.AddColumn(files, "Inhalt", each try Excel.Workbook([Content], null, true) otherwise null),
            tablesExtracted = Table.AddColumn(filesWithContent, "Tabelle", each try [Inhalt]{[Item=tableName, Kind="Table"]}[Data] otherwise null),
            validTables = Table.SelectRows(tablesExtracted, each [Tabelle] <> null),
            validZip = List.Zip({validTables[Tabelle], validTables[Name]}),
            ListToTable = List.Transform(validZip, each Table.AddColumn(_{0}, "Dateiname", (x) => _{1})),
            result = Table.Combine(ListToTable)
        in
            result,

Auch wenn ich über die  Präsentation des M-Codes von PIVPQ überhaupt nicht einverstanden bin, steckt in diesem M-Code sehr viel Sachverstand von der M-Materie.

Gruß von Luschi
aus klein-Paris
Antworten Top
#42
Der Code ist das Ergebnis von einem Prompt, das finde ich schon beeindruckend.

Ein "Nachschärfen" (also weiteres Prompten) liefert
Code:
LoadTableFromFiles = (folderPath as text, tableName as text) as table =>
    let
        // Alle Dateien im angegebenen Ordner laden
        files = Folder.Files(folderPath),
        // Nur gültige Excel-Dateien verarbeiten
        excelFiles = Table.SelectRows(files, each Text.EndsWith(Text.Lower([Extension]), ".xlsx") or Text.EndsWith(Text.Lower([Extension]), ".xls")),
        // Excel-Inhalt extrahieren
        filesWithContent = Table.AddColumn(excelFiles, "Workbook", each try Excel.Workbook([Content], null, true) otherwise null),
        // Nur Zeilen mit erfolgreichem Workbook-Laden behalten
        validWorkbooks = Table.SelectRows(filesWithContent, each [Workbook] <> null),
        // Gewünschte Tabelle extrahieren
        tablesExtracted = Table.AddColumn(validWorkbooks, "TargetTable", each try [Workbook]{[Item=tableName, Kind="Table"]}[Data] otherwise null),
        // Nur Dateien mit der gewünschten Tabelle behalten
        validTables = Table.SelectRows(tablesExtracted, each [TargetTable] <> null),
        // Tabellen vereinigen und Dateinamen als Spalte hinzufügen
        combined = Table.Combine(
            List.Transform(
                validTables[TargetTable],
                (tbl, idx) => Table.AddColumn(tbl, "Dateiname", each validTables[Name]{idx})
            )
        )
    in
        combined
Ich habe das jetzt nicht im Detail getestet oder gründlich geprüft – das ist aktuell aber auch nicht entscheidend.

Wichtig ist: Wenn man das weitertreibt und mit Sachverstand bearbeitet, entsteht gut wartbarer und lesbarer M-Code.

Künstliche Intelligenz wird den Programmierer nicht ersetzen – wohl aber jene Programmierer, die sie nicht nutzen
Antworten Top
#43
Genau, wie unnötige Schritte suboptimal sind, sind es meist auch 1-Schrittabfragen.

Rick zeigt, wie mit KI Abfragen optimiert werden können.

Einfaches Konsolidieren von Power Query-Schritten
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste