固定幅の csv を解析するための PowerQuery

固定幅の csv を解析するための PowerQuery

固定幅のcsv.txtがあります。

Martin    Junger    12    
John      Wing      124

PowerQuery でロードするには、次の構文を使用します。

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"

したがって、csv のすべての列に対して新しいコマンドを作成する必要がありますがTable.SplitColumn、これはまったく便利ではありません。 1 つのコマンドで実行できる構文はありますか?

ありがとう

答え1

ドキュメントには記載されていませんが、Csv.Document は、各列の (0 から始まる) 開始位置を指定するリストを「オプションの区切り文字」引数として受け入れます。このことは、そのファイル (Excel 2016 を使用: データ リボン / 新しいクエリ / ファイルから / テキストから) を指定したときに PQ によって生成されたクエリで確認できます。「オプションの区切り文字」引数は次のとおりです。{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"

答え2

固定幅をインポートするために Excel 用の PowerQuery プラグインを使用する必要はありません。これは組み込まれています。

手順:

  1. テキストからのデータ タブ (外部データの取得セクション)
  2. CSVファイルを選択
  3. テキストインポートウィザードが起動することを確認します
  4. 元のデータタイプで「固定幅」を選択します
  5. 必要に応じてウィザードを進めます

ここに画像の説明を入力してください

関連情報