Power Queryを使った巨大CSVファイルの中身を覗く方法（小ネタ）

数GBの巨大な測定データを受け取り、Excelで開かず困ったことはありませんか？
そんな時に、サクッとCSVに入ったデータを覗く方法の紹介です。
先に全体像を掴むことで不要なデータの分割＆確認作業が省略でき、作業の効率UPとなります。
![yomitori - コピー - コピー.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617683/a65943a7-219d-0768-d9f7-428bca3fd944.png)

## Power Query作業手順
まずは作業手順をまとめました。後ほどこの作業の自動化も説明します。

##### CSVファイルを読み取り
Excelを開き Power queryのデータ取得からCSVファイルを選ぶ（Menu/Data/From Text/CSV)
![001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617683/2f3e2aed-1511-3933-c359-6258daae8289.png)


##### Power Query起動
Transform Data をクリックしPower Queryに入ります。
![003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617683/3bb693b2-c81e-9f39-0e8c-ce8ad38834ce.png)

##### Index行を追加
 Add ColumnからIndex行を追加(Menu/Add Column/index Column)
![004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617683/745f63c5-fcde-b3cf-dee3-99aa5d2af2a7.png)

##### Indexの属性をTEXTに変更
Indexを右クリックし、属性をTEXTに変更します。
![005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617683/3747d7ac-2763-0298-458f-a8683d3e2540.png)

##### 読み込み条件を「終わる」に設定
Indexを右クリックし、読み込み条件を「終わる」に設定します。
![006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617683/d4c87317-071f-d54a-d6c6-66f7f4a430a9.png)

##### 読み込み条件を設定
読み込み条件を"000"で終わるに設定します。
"000"では1000行おきに1行の割合でデータを読み込みますのでデータサイズはが1,000分の１になります。これで巨大ファイルが小さくなります。"000"を"0"に変更すると10行に1行読み込みます。
![007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617683/6184e95e-222c-2711-329c-3d0f440c1ceb.png)

##### Dataを読み込む
読み込みます。(Menu/File/Close&Load)
![008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617683/03e0e537-58c0-1bc6-56b7-860e403219b4.png)

##### Excelで開く
これでエクセル上にデータが読み込めましたので、グラフにするなりして必要なデータのINDEX番号を見つけて下さい。そのINDEXを使いフィルターを調整＆再読み込みすると必要なデータが詳細に読み込めます。
![009 - コピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617683/d3a0b463-98b9-5348-2816-54680fef2d31.png)

## 自動化
この作業を毎回行うのは手間ですよね？
Power Queryでは、上で説明した一連の作業をこの作業を自動化できます。

##### ファイルパスを登録
ファイルパスをName Manager に登録（セルの値をPathTOに入れます）。
これでセルに入力したファイル名、ファイルパスをPower QUery に取り込めます。
![016.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617683/4cde3b4c-127b-05f7-ebd9-002dd31ef6c1.png)
##### セルにパス入力
セルにファイルパスとファイル名を入れます。
![013.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617683/c73684f1-d07d-fae1-8e97-15fee37991f3.png)

##### Power Query editorの起動
テーブルをクリックしMenu/Query/EditからPower Query editorを起動します。
![017.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617683/ea129df8-3dbd-5656-67cc-b9c4264b875f.png)

##### Advanced Editorを開く
Power Query EditorのMenu/Home/Advanced Editorを開きます。
![018.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617683/74385818-3c0f-7ffe-1de2-2f224b0b0a5c.png)

##### Power Query の編集
これで「データ更新」でName Managerに登録されたPathTOのデータを読み込みます。
![019.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617683/54982f37-0fa0-289a-447e-a5284566359c.png)


```ruby:power query
let
    Path1 = Excel.CurrentWorkbook(){[Name="PathTO"]}[Content]{0}[Column1],
    Source = Csv.Document(File.Contents(Path1),[Delimiter=",", Columns=424, Encoding=1252, QuoteStyle=QuoteStyle.None]),
    #"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
    #"Added Index1" = Table.AddIndexColumn(#"Promoted Headers", "Index", 0, 1, Int64.Type),
    #"Changed Type2" = Table.TransformColumnTypes(#"Added Index1",{{"Index", type text}}),
    #"Filtered Rows1" = Table.SelectRows(#"Changed Type2", each Text.EndsWith([Index], "000")),
    #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows1",{"Index"})
in
    #"Removed Columns"
```
##### データの更新
では、Power Queryを試してみます。ファイルパス、ファイル名を入力しExcel上で"Menu/Data/Refresh All"でデータを更新します。
![014.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617683/976565cc-96bd-b51b-3477-9744e061ab39.png)

読み込み中はこの表示が出ますので、消えるまでしばらくお待ちください。
![015.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617683/557307c0-b22b-846d-93b8-bfcafd0ad9cd.png)

従来巨大ファイルは、ファイル分割などで適当なサイズに分割後、いちいち各ファイルを確認していましたが、Power Queryのフィルタ機能を使い「読めるサイズ」で荒く読み取る方法です。先に全体像が見れるので、不要なデータを分割、確認する手間が省けます。