Skip to content

Instantly share code, notes, and snippets.

@SchreiberLars
Last active February 17, 2020 16:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SchreiberLars/0ea46ae42f80181ba6f6070775a93761 to your computer and use it in GitHub Desktop.
Save SchreiberLars/0ea46ae42f80181ba6f6070775a93761 to your computer and use it in GitHub Desktop.
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