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.SplitColumn
comando 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:
- Guia Dados do texto (seção Obter dados externos)
- Selecione seu arquivo csv
- Veja que isso abre o Assistente de importação de texto
- Em: Tipo de dados original, escolha "Largura fixa"
- Prossiga pelo assistente conforme apropriado