Power Query(パワークエリ) の基本的な使い方と活用方法

#使い方
1. エクセルのテーブルや CSV を用意する。
    1. テーブルの作りかた
        1. 表のセルを選択し、「挿入」→「テーブル」を選択する。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/44f9f949-bb1d-c4f8-58c5-7e06aa008e68.png)
        1. データ範囲を指定する。きれいなテーブルなら特にいじらないでも問題なく範囲が指定されている。必要に応じて見出しのチェックを入れる。  
         ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/cca31aaf-7d3d-2f92-26d4-8e086ddc6aad.png)
        1. テーブルに変換される。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/95a608b3-65da-46a5-b89f-bd380837c6a0.png)
        1. テーブルのセルを選択し、「デザイン」→「テーブル名」で適切なテーブル名を設定する。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/1ea32e55-c8d9-6704-8496-4667e1240cb8.png)
        1. エクセルファイルを保存する。  
1. 新規エクセルを開き、「データ」→「データの取得」→「ファイルから」→「ブックから」(ほか適切なもの)を選択し、テーブルのあるエクセルファイルをインポートする。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/d7a25356-7f89-db5f-db51-7005590a3683.png)  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/224439bf-848b-bd3a-f2f6-4ed12fb5445e.png)
1. ナビゲーターが表示されるので、対象のテーブルを選択し、「データの変換」を選択する。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/db0bdc97-93ad-49d8-0baa-e069a7a16008.png)
1. Power Query エディターが表示されるので、データを__コネコネ(※ここが一番大事)__する。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/496ce6b9-8c08-29f8-8a45-575f1cebcfff.png)
1. 「閉じて読み込む」を選択し、エクセルデータにする。  
1. 任意で自動更新の設定を行う。この設定を行わない場合、元データの更新時には、手動でクエリの更新をしないとデータが反映されない。  
    1. 「クエリ」→「プロパティ」を選択する。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/51579f5a-59ca-055f-c536-e33b9582280f.png)
    1. 「定期的に更新する」「ファイルを開くときにデータを更新する」にチェックを入れて、OK。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/8f47e320-46ce-4ac1-492f-0e96d738cf03.png)


#コネコネ用例 (随時追加していく)
##集計
以下のような伝票テーブルを、顧客ごとに売り上げの集計や件数の集計を行う。
SUMIF, COUNTIF を使ってもできる。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/2dc6a6d4-e411-1d83-8ac1-7286ca6c1655.png)

1. データの取得で上記エクセルファイルを選択、テーブルを選択し、データの変換で Power Query エディターを開く。
1. 集計のキーとなる列(今回だと顧客番号)を選択し、「グループ化」を選択する。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/1f9bac6a-f540-f245-feb1-204b91c6f15a.png)

1. 顧客ごとの件数の集計の場合
    1. 「行数のカウント」を選択し、OK。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/681d6756-46a3-1e77-962b-86493220b384.png)
    1. 以下のような件数データに変換される。列名は適切に変更する。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/3cae2442-813d-bb93-7377-343815cac97c.png)
1. 顧客ごとの売り上げの集計の場合
    1. 「合計」を選択し、集計したい列名(今回だと価格)を選択し、OK。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/a5ec19df-eeda-a7ad-9cfb-7fc199baddd5.png)
    1. 以下のような売り上げデータに変換される。列名は適切に変更する。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/50bb8871-1e04-bd45-0d92-41b1487891cb.png)
1. 顧客・月毎の売り上げの集計の場合
    1. 月でグループ化できるよう、グループ化の前に月の列を作成する。
売上日を選択し、「列の追加」→「日付」→「月」→「月の開始日」を選択し、「月の開始日」列を追加する。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/764c43f0-8dc2-cdeb-9ab2-c5a666f46793.png)  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/0812676c-2a32-2ffb-cc0b-5622511c294e.png)
    1. 「詳細設定」を選択すると、グループ化のキーを複数選べる。グループ化で「顧客番号」「月の開始日」を選択、「合計」を選択し、集計したい列名(今回だと価格)を選択し、OK。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/84e4ec3a-c20f-719a-562f-84d63c016cd5.png)
    1. 以下のような売り上げデータに変換される。列名は適切に変更する。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/20b76fca-1e94-d99a-9ddf-ad179ddd1d3b.png)


##連結
以下のように支店毎にファイルが分かれてフォルダに置かれている売り上げデータを一つのデータにまとめる。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/0119a44d-2de0-ca78-4d84-34f237299d38.png)  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/407ba924-03b7-7920-3ec4-59dca6c3038d.png)

1. データの取得で「フォルダーから」を選択する。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/901c0685-33ac-a943-660d-d4dfae9f150b.png)
1. 支店ごとのファイルが入っているフォルダーを選択する。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/145cfae9-9c19-367a-ae61-d4057cd16234.png)
1. 「結合および編集」を選択する。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/75242c6c-34fd-d8f2-83bf-5c6529c8c142.png)
1. テーブルを選択し、OK。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/7a9c55fc-dd63-b310-88bb-a5b1e16aca40.png)
1. 連結されたデータが作成される  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/e4c7c7ec-7770-3774-797d-01f7940df0d9.png)
1. 任意でデータの値を修正する。
    1. ファイル名の列を選択し、「変換」→「値の置換」を選択する。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/8d34db2e-3aa6-4e68-591c-be2eef837c36.png)
    1. 検索する値を ".xlsx"、置換後の値を空にし、OK。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/a48f5fe7-1a1a-16ac-8147-27b85a036803.png)
    1. 文字列から .xlsx が削除され、支店名になる。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/19ab8c21-2073-fcf6-11af-7a04ce50ed85.png)
    1. 列名は適切に変更する。


1. フォルダに新しい支店のデータを追加する。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/74da3871-aa2b-7c9d-1c4e-4c68496aa49b.png)
1. 自動で新支店のデータが取り込まれる。

追加前
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/d318554e-c7fe-15e1-58ef-a5628e7bea11.png)  

追加後
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/2df9f31a-6362-59fe-7aec-a62931daf26b.png)

##結合
以下のような伝票テーブルに、顧客テーブルから顧客名を結合する。
VLOOKUP を使ってもできる。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/69bf3a57-142c-89d4-6d78-69a3fa184989.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/9b49f216-0534-da91-d28b-522297987fab.png)

1. データの取得で伝票テーブルのエクセルファイルを選択、テーブルを選択し、データの変換で Power Query エディターを開く。
1. 新しいソースから、顧客テーブルのエクセルファイルを選択、テーブルを選択する。  
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/9491dfbf-cab0-844a-e7c1-99e516a1a170.png)
1. ベースにしたいテーブル(今回だと伝票)を選択し、「クエリのマージ」を選択する。  
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/c463c6b4-8f96-d43a-8db1-1faaeb38ea2a.png)
1. マージのポップアップがでてくるので、もう一つのテーブルを選択する。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/8e510e24-e9b8-f680-6b86-8034232a869b.png)
1. 結合したい列をそれぞれ選択し、適切な結合の種類を選択し、OK。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/656725cf-b6e8-b39a-bc62-a21167b87410.png)
1. 列が一行増えるので、右上のボタンを選択する。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/28017ce0-d864-8de6-5296-3ff9d7bbbf08.png)
1. 追加で表示したい列名を選択し、OK。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/7ea5a194-7eab-90ac-700d-34053eb662cc.png)
1. 伝票テーブルに会社名がマージされた。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/e1a8836e-6004-6f78-a65c-1e3f88c5102d.png)


##正規化
以下のような売り上げデータを[顧客番号、月、売り上げ]の形に変換する。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/6a905e28-31c3-fa20-bf11-cc47b24e20e9.png)

1. データの取得で上記エクセルファイルを選択、テーブルを選択し、データの変換で Power Query エディターを開く。
1. 基準となる列(今回だと顧客番号)を選択し、「変換」→「列のピボット解除」の横の▼ → 「その他の列のピボット解除」を選択する。  
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/5bab536a-47bb-b45c-3097-561b902f6221.png)
1. 以下のような正規データに変換される。列名は適切に変更する。  
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/d82b078c-6c87-441b-60c6-630d020569d6.png)


##EoL確認
メーカのサイトにある EoL のテーブルを取得し、EoL の日付が近いものを確認する。
(プロキシ超えて取得する方法は確認中。。)

1. データの取得で「Webから」を選択する。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/0e07ec81-d8be-cb5b-0f07-3b3dcd5d5868.png)
1. EoL テーブルが記載されている URL を入力し、OK。  
今回だと JUNOS のページ https://support.juniper.net/support/eol/software/junos/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/76d5b013-343a-fdae-4646-4f94ed7d46f2.png)
1. 対象のテーブルを選択し、「データの変換」を選択する。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/0040d8bc-8f93-fe02-5cfe-66a797ffbc96.png)
1. 必要に応じて不要な行を削除したり、加工したりして、「閉じて読み込む」でエクセルデータにする。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/433ae706-23a1-d41a-6ecb-6c1d8700ec37.png)
1. 以下のようなエクセルデータになる。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/65000459-b517-9fc5-9ffa-8c089c6cc029.png)
1. 例えば以下のような条件付き書式で一年以内に EoL を迎えるものを色付けし、気付けるようにする。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/e89421c1-7141-2310-0453-8f47d13fc12f.png)  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531505/e5e8a474-2e32-bbf0-f40d-59493f727602.png)
1. 多分 PAD 使えば、その情報を Teams に投稿することもできるじゃないか、と妄想。(未確認)