PowerQuery для анализа CSV-файлов фиксированной ширины

PowerQuery для анализа CSV-файлов фиксированной ширины

У меня есть csv.txt фиксированной ширины, например

Martin    Junger    12    
John      Wing      124

Для загрузки с помощью PowerQuery используется следующий синтаксис:

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

Так что для каждого столбца в csv мне нужно создавать новую Table.SplitColumnкоманду, что совсем не удобно. Есть ли какой-нибудь синтаксис, чтобы сделать это одной командой?

Спасибо

решение1

Хотя это не упоминается в документе, Csv.Document принимает список в качестве аргумента "необязательного разделителя", определяя начальную позицию (начиная с нуля) каждого столбца. Вы можете увидеть это ниже в запросе, сгенерированном PQ, когда я указал ему на этот файл (например, используя Excel 2016: Лента данных / Новый запрос / Из файла / Из текста). Аргумент "необязательного разделителя" следующий:{0,10,20}

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

решение2

Вам не нужно использовать плагин PowerQuery для Excel, чтобы импортировать данные фиксированной ширины — он встроен.

Шаги:

  1. Вкладка «Данные из текста» (раздел «Получить внешние данные»)
  2. Выберите ваш CSV-файл
  3. Видим, что открывается мастер импорта текста.
  4. В: Исходный тип данных выберите «Фиксированная ширина»
  5. Продолжайте следовать указаниям мастера по мере необходимости.

введите описание изображения здесь

Связанный контент