Tengo csv.txt de ancho fijo, por ejemplo
Martin Junger 12
John Wing 124
Para cargarlo con PowerQuery se utiliza esta sintaxis:
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"
Entonces, para cada columna en csv necesito crear un nuevo Table.SplitColumn
comando, lo cual no es nada conveniente. ¿Existe alguna sintaxis para hacerlo en un solo comando?
Gracias
Respuesta1
Aunque no se menciona en el documento, Csv.Document acepta una lista como argumento "delimitador opcional", especificando la posición inicial (de base cero) de cada columna. Puede ver esto a continuación en la consulta generada por PQ cuando apunté a ese archivo (por ejemplo, usando Excel 2016: Cinta de datos/Nueva consulta/Desde archivo/Desde texto). El argumento del "delimitador opcional" es:{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"
Respuesta2
No es necesario utilizar el complemento Powerquery para Excel para importar un ancho fijo: está integrado.
Pasos:
- Ficha Datos desde texto (sección Obtener datos externos)
- Seleccione su archivo csv
- Mira que aparece el Asistente de importación de texto.
- En: Tipo de datos original, elija "Ancho fijo"
- Continúe con el asistente según corresponda