Excel Power Query
複数のCSVファイルを読み込んで連結する
ここでは,一つのフォルダに格納された複数の CSV ファイルを Excel で読み込んで縦方向に連結(結合)する方法を説明します.
CSVファイルのダウンロード
まず,GitHub の sample-data-sets リポジトリの machine-sales フォルダ から 2018.csv と 2019.csv という2つのファイルをダウンロードして新しいフォルダ(ここでは data フォルダ)に格納します.
ダウンロードした CSV ファイルの中身を確認します.2018.csv は 144 行のデータ,2019.csv は 400 行のデータです.また,どちらのファイルも「id」「date」「branch」「staff」「amount」という 5 列で構成されたカンマ区切りのテキストファイルです.
ファイルの連結
Excel でフォルダに含まれるすべてのファイルを連結してみます.まず,Excel を起動し,新規ブックを作成します.その後,「データ」→「データの取得」→「ファイルから」→「フォルダーから」を選びます.
ファイルダイアログが表示されるので,CSVファイルが保存されたフォルダ(dataフォルダ)を選択して「開く」ボタンをクリックします.
次のような画面が表示されるので,内容を確認して画面下側にある「結合」ボタンから「データの結合と変換」を実行します.
すると次のような画面が表示されました.最初のファイルの中身がプレビューされていますが,「branch」列と「staff」列が文字化けしています.これは,CSVファイルが Unicode (UTF-8) で作成されているにも関わらず,日本語(シフトJIS)であるものとして読み込んでいることが原因です.
次の画面のとおり「元のファイル」で「Unicode (UTF-8)」を選ぶと文字化けが解消されました.内容を確認して「OK」ボタンをクリックします.
「Power Query エディター」が起動しました.この画面で読み込む列の指定やデータの変換方法を指定することができます.例えば「id」の列は読み込む必要がないものとしましょう.
「id」列をクリックすると選択されるので,「列の削除」を実行するか,右クリックして「削除」を実行します.
その結果,「id」列が削除され,さらに画面右側の「適用したステップ」に「削除された列」という行が追加されました.この「適用したステップ」にある内容がデータを読み込む度に実行されることになります.このままでも良いのですが,後でどのような処理が行われているかが分かりやすくなるように名前を変更することができます.「削除された列」を右クリックして名前を「ID列の削除」に変更します.
「適用したステップ」の名前を変更することができました.次に1列目の「Source Name」には読み込んだファイル名が表示されています.このファイル名「2018.csv」から「.csv」を削除して「2018」だけを残したい状況を考えます.このためには「.」をデータの区切り文字をして考えて,「2018」と「csv」に分割したあと,「csv」を削除するとよいでしょう.次の画面の通り,「Source Name」列を選択後,右クリックして「列の分割」→「区切り記号による分割」を実行します.
次の画面では「区切り記号」に「.」を指定します.また今回の場合,「分割」はどれを選択しても構いません.もしも「.」が複数存在する場合にはその状況に適したものを選んでください.「OK」ボタンをクリックします.
「2018.csv」というデータ列が「2018」と「csv」という列に分割されました.
「csv」の列は必要ないので削除します.
列が削除されたので画面右の「適用したステップ」でステップの名称を「.csvの削除」に変更しておきます.
1列目の見出しを変更するには見出し部分をダブルクリックします.
列の見出しを「year」に変更します.
読み込み方法の指定が完了したので,画面左上の「閉じて読み込む」をクリックします.
「テーブル」が選択されていることを確認し,「新規ワークシート」または「既存のワークシート」を選び(今回は「既存のワークシート」を選び),「OK」をクリックします.
data フォルダにあるファイルに対して指定した変換が実行されて Excel のシートに読み込まれました.
下方向にスクロールすると,「2018.csv」のあとに「2019.csv」のデータが連結されていることがわかります.
更にスクロールすると,合計で543行のデータとなっていることがわかります.
新規ファイルの追加と再読み込み
data フォルダには「2018.csv」と「2019.csv」ファイルが格納されていましたが,このフォルダに新たな「2020.csv」ファイルを追加します.GitHub のリポジトリから 2020.csv をダウンロードして同じフォルダに格納します.
Excel に戻って「テーブルデザイン」→「更新」ボタンをクリックするだけで 2020.csv の内容も読み込まれました.つまり,新たなデータが得られたら data フォルダに格納して Excel で更新の作業するだけで良いことになります.
Power Query エディタの起動
ファイルの読み込み時に実行される変換等の処理は「Power Query エディタ」で確認・編集ができます.確認・編集のためには「クエリ」→「編集」をクリックします.
「Power Query エディタ」が起動しました.必要に応じて読み込む方法などを修正することができます.
データファイルの更新と読み込みデータの更新
元の CSV ファイルにあるデータが更新されたときにどのような操作をすればよいか確認します.例えばすべてのファイルの「staff」列にある「斎藤」という名前を「齋藤」に書き換える操作を行います.Visual Studio Code の場合は「data」フォルダを開いたあと,画面右のアクティビティーバーにある検索ボタンを押して検索画面を表示したあと下の画面のように検索文字と置換文字を入力し,「すべて置換」を実行します.
3つのファイルで「斎藤」が「齋藤」に置換されました.
CSV ファイルの内容が更新されましたが,Excel ファイルの表示上はまだ更新されていません.「クエリ」→「更新」ボタンをクリックします.
データが更新され,「齋藤」に置き換わっていることが確認できました.