PowerQuery para analisar csv de largura fixa

PowerQuery para analisar csv de largura fixa

Eu fixei a largura csv.txt, por exemplo

Martin    Junger    12    
John      Wing      124

Para carregá-lo com PowerQuery esta sintaxe é usada:

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"

Portanto, para cada coluna em csv, preciso criar um novo Table.SplitColumncomando que não é nada conveniente. Existe alguma sintaxe para fazer isso em um comando?

Obrigado

Responder1

Embora não seja mencionado no documento, Csv.Document aceita uma lista como argumento do "delimitador opcional", especificando a posição inicial (baseada em zero) de cada coluna. Você pode ver isso abaixo na consulta gerada pelo PQ quando apontei para aquele arquivo (por exemplo, usando Excel 2016: Faixa de dados/Nova consulta/Do arquivo/Do texto). O argumento do "delimitador opcional" é:{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"

Responder2

Você não precisa usar o plugin powerquery para Excel para importar largura fixa - ele está integrado.

Passos:

  1. Guia Dados do texto (seção Obter dados externos)
  2. Selecione seu arquivo csv
  3. Veja que isso abre o Assistente de importação de texto
  4. Em: Tipo de dados original, escolha "Largura fixa"
  5. Prossiga pelo assistente conforme apropriado

insira a descrição da imagem aqui

informação relacionada