let func = (PfadZumOrdner as text, Spaltentrennzeichen as text, EncodingCode as number ) as table => | |
let | |
//Hier den Funktions-Corpus eintragen | |
//=========================================Beispielparameter fürs Debugging==================================== | |
/*PfadZumOrdner = "H:\SSBI-Blog\Website\Business Topics\_csvs mit verschiedenen Headern einlesen\Datenquelle", | |
Spaltentrennzeichen = ";", | |
EncodingCode = 1252 | |
*/ | |
//=========================================Beispielparameter fürs Debugging==================================== */ | |
Quelle = Folder.Files(PfadZumOrdner), | |
//Auf csv-Dateien einschränken | |
NurCSVs = Table.SelectRows(Quelle, each Text.Lower([Extension]) = ".csv"), | |
//Dieser Schritt ermittelt in einer neuen berechneten Spalte die Überschriften individuell je Datei und nicht anhand einer Beispieldatei | |
UeberschriftenJeDatei = Table.AddColumn(NurCSVs, "UeberschriftenJeDatei", each try Lines.FromBinary([Content],QuoteStyle.None){0} otherwise null, type text), | |
//In einer neuen berechneten Spalte alle Tabellen mit ihren individuellen Überschriften einzeln ermitteln und anschließend in einer Liste wiedergeben | |
GetAllTables = | |
Table.AddColumn( | |
UeberschriftenJeDatei, | |
"AlleTabellen", | |
each Table.PromoteHeaders( | |
Csv.Document( | |
[Content], | |
[Delimiter=Spaltentrennzeichen, | |
Columns=List.Count( | |
Text.Split( | |
[UeberschriftenJeDatei], | |
Spaltentrennzeichen | |
) | |
), Encoding=EncodingCode, QuoteStyle=QuoteStyle.None] | |
), | |
[PromoteAllScalars=true] | |
) | |
)[AlleTabellen], | |
//Das Resultat besteht aus den kombinierten Tabellen der jeweiligen CSV-Dateien | |
Output = Table.Combine( GetAllTables ) | |
in | |
Output, | |
documentation = | |
[ | |
Documentation.Name = " fnImportCSVsWithDifferentStructure ", | |
Documentation.Description = "Diese Funktion importiert CSV-Dateien aus einem definierten Ordner, unter Berücksichtigung verschiedener Datenstrukturen.", | |
Documentation.Parameters = " ", | |
Documentation.Category = " ", | |
Documentation.Author = " Lars Schreiber: www.ssbi-blog.de ", | |
Documentation.Examples = | |
{ | |
[ | |
Description = " " , | |
Code = " ", | |
Result = " " | |
] | |
} | |
] | |
in | |
Value.ReplaceType(func, Value.ReplaceMetadata(Value.Type(func), documentation)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment