PowerQuery para analizar csv de ancho fijo

PowerQuery para analizar csv de ancho fijo

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.SplitColumncomando, 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:

  1. Ficha Datos desde texto (sección Obtener datos externos)
  2. Seleccione su archivo csv
  3. Mira que aparece el Asistente de importación de texto.
  4. En: Tipo de datos original, elija "Ancho fijo"
  5. Continúe con el asistente según corresponda

ingrese la descripción de la imagen aquí

información relacionada