PowerQuery para analisar csv de largura fixa

0

Eu fixei a largura csv.txt, por exemplo,

Martin    Junger    12    
John      Wing      124

Para carregá-lo com o 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 o novo comando Table.SplitColumn , o que não é conveniente. Existe alguma sintaxe para fazer isso em um comando?

Obrigado

    
por pashtetGP 11.03.2015 / 11:50

2 respostas

0

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

    
por 09.12.2015 / 00:21
0

Você não precisa usar o plugin powerquery para que o Excel importe largura fixa - está embutido.

Etapas:

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

    
por 11.03.2015 / 21:24