PowerQuery zum Analysieren von csv mit fester Breite

852
pashtetGP

Ich habe eine feste Breite csv.txt, z

Martin Junger 12  John Wing 124 

Zum Laden mit PowerQuery wird diese Syntax verwendet:

let Source = Csv.Document(File.Contents("C:\csv.txt"),null,";",null,1251), #"Split Column name" = Table.SplitColumn(Source,"Column1",Splitter.SplitTextByPositions(, false),{"name", "ColumnOther"}), #"Split Column surname" = Table.SplitColumn(#"Split Column name","ColumnOther",Splitter.SplitTextByPositions(, false),{"surname", "ColumnOther"}), #"Split Column salary" = Table.SplitColumn(#"Split Column surname","ColumnOther",Splitter.SplitTextByPositions(, false),{"salary", "ColumnOther"}) in #"Split Column salary" 

Daher muss für jede Spalte in csv ein neuer Table.SplitColumnBefehl erstellt werden, der überhaupt nicht geeignet ist. Gibt es eine Syntax, um dies in einem Befehl auszuführen?

Vielen Dank

0
Ich habe noch nie Powerquery verwendet, aber was wäre, wenn die CSV-Begrenzer statt fester Breite hätten, wäre das einfacher? Raystafarian vor 9 Jahren 0
Wenn es abgegrenzt ist, kann es problemlos analysiert werden. Ich muss aber mit fest begrenzten arbeiten. pashtetGP vor 9 Jahren 0

2 Antworten auf die Frage

0
evan

Sie müssen das Powerquery-Plugin nicht für Excel verwenden, um feste Breite zu importieren - es ist eingebaut.

Schritte:

  1. Registerkarte Daten aus Text (Abschnitt Externe Daten abrufen)
  2. Wählen Sie Ihre CSV-Datei aus
  3. Stellen Sie sicher, dass der Textimport-Assistent aufgerufen wird
  4. Wählen Sie in: Originaldatentyp "Feste Breite"
  5. Fahren Sie gegebenenfalls mit dem Assistenten fort

enter image description here

0
Mike Honey

Obwohl es im Dokument nicht erwähnt wird, akzeptiert Csv.Document eine Liste als Argument "optionaler Begrenzer", in der die (nullbasierte) Startposition jeder Spalte angegeben wird. Sie können dies unten in der von PQ generierten Abfrage sehen, wenn ich auf diese Datei zeigte (z. B. mit Excel 2016: Datenleiste / Neue Abfrage / Aus Datei / Aus Text). Das Argument "optionales Trennzeichen" lautet:

let Source = Csv.Document(File.Contents("C:\csv.txt"),null,,null,1252), #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}, {"Column2", type text}, {"Column3", Int64.Type}}) in #"Changed Type"