CSV ファイルを結合する

Power Query では、特定のデータ ソースから複数のファイルを結合できます。 この記事では、結合するファイルが CSV ファイルである場合のエクスペリエンスについて説明します。 詳細については、「ファイルの結合の概要」を参照してください。

ヒント

この記事で使用されているサンプル ファイルをこのダウンロード リンクからダウンロードすると、この例に沿って進めることができます。 これらのファイルは、ローカル フォルダー、SharePoint フォルダー、Azure Blob Storage、Azure Data Lake Storage、ファイル システム ビューを提供するその他のデータ ソースなど、任意のデータ ソースに配置できます。

わかりやすくするために、この記事の例ではフォルダー コネクタを使用します。 詳細については、「フォルダー」を参照してください。

使用されるサンプル ファイルについて

ファイルを結合するには、すべてが同じ構造と同じ拡張子を持っている必要があります。 この例で使用されているファイルはすべて、同じ構造と拡張子 (.csv) を持っています。

2019 年の月ごとに 12 個の CSV ファイルがあります。 次の図は、1 月のファイルの最初の 15 行を示しています。

ヘッダー セクションと残りのデータを示す 2019 年 1 月のサンプル CSV ファイル。すべてコンマで区切られています。

行数はファイルによって異なりますが、どのファイルも最初の 4 行はヘッダー セクションです。 5 行目には列ヘッダーが含まれています。テーブルのデータは 6 行目から始まり、後続のすべての行が続きます。

目標は、12 ファイルすべてを 1 つのテーブルに結合することです。 この結合テーブルは、テーブルの上部にヘッダー行があります。ヘッダー行の後の個別の列には、ソース名、日付、国、ユニット、年度全体の収益データが含まれています。

最終的な結合テーブルのサンプル。

[テーブルのプレビュー]

結合するファイルをホストするフォルダー (この例では、フォルダーの名前は CSV Files です) に接続すると、[テーブルのプレビュー] ダイアログ ボックスが表示され、左上隅にフォルダー パスが表示されます。 データ プレビューには、ファイル システム ビューが表示されます。

ファイル システム ビューのテーブル プレビュー。

この例では、[結合] を選択します。

Note

別の状況では、[データの変換] を選択して、ファイルを結合する前にデータをさらにフィルター処理して変換することができます。 [結合] を選択する方法は、結合するファイルだけがフォルダーに含まれている場合にのみお勧めします。

[ファイルの結合] ダイアログ ボックス

テーブルのプレビューで [結合] を選択すると、[ファイルの結合] ダイアログ ボックスが表示されます。

[ファイルの結合] ダイアログ ボックス。

Note

Power Query では、見つかった最初のファイルに基づいて、使用するコネクタが自動的に検出されます。 CSV コネクタの詳細については、「テキスト/CSV」を参照してください。

この例では、すべて既定の設定のままにします ([ファイルの例][最初のファイル] に設定し、[元のファイル][区切り記号][データ型検出] は既定値です)。

次に、右下隅にある [データの変換] を選択して、出力クエリに移動します。

出力クエリ

[ファイルの結合] ダイアログ ボックスで [データの変換] を選択すると、ローカル フォルダーへの接続から最初に作成したクエリの Power Query エディターに戻ります。 出力クエリでは、一番左の列にソース ファイル名が表示され、残りの列には各ソース ファイルのデータが表示されます。

追加の変換を行わずに結合されたファイルの出力クエリ。

ただし、データは正しい形式ではありません。 結合する前に、各ファイルから先頭の 4 行を削除する必要があります。 各ファイルを結合する前にこの変更を行う場合は、画面の左側にある [クエリ] ウィンドウで [サンプル ファイルの変換] クエリを選択します。

[サンプル ファイルの変換] クエリを変更する

この [サンプル ファイルの変換] クエリでは、[Date] 列の値は、年-月-日 (YYYY-MM-DD) 形式の 4 月のデータを示しています。 April 2019.csv は、テーブル プレビューに表示される最初のファイルです。

最初の 4 行のヘッダー セクションと 5 行目の見出しを含む、2019 年 4 月のデータ列を示すテーブル。

次に、新しい変換セットを適用してデータをクリーンアップする必要があります。 各変換は、各ファイルのデータを結合する前にフォルダー内のすべてのファイルに適用されるヘルパー クエリ グループ内の関数に自動的に変換されます。

[サンプル ファイルの変換] クエリに追加する必要がある変換は次のとおりです。

  1. [上位の行の削除]: この操作を実行するには、テーブルの左上隅にあるテーブル アイコン メニューを選択し、[上位の行の削除] を選択します。

    テーブル メニューの [上位の行の削除]。

    [上位の行の削除] ダイアログ ボックスで「4」と入力し、[OK] を選択します。

    [上位の行の削除] ダイアログ ボックス。

    [OK] を選択すると、テーブルの上位 4 行が表示されなくなります。

    行が削除されたサンプル クエリ。

  2. [先頭の行を見出しとして使用]: テーブル アイコンを再度選択し、[先頭の行を見出しとして使用] を選択します。

    [先頭の行を見出しとして使用] アイコン。

    その操作の結果により、テーブルの最初の行が新しい列見出しに昇格します。

    サンプル テーブルの昇格した見出し。

この操作が完了すると、既定の Power Query では、列のデータ型が自動的に検出され、新しい [変更された列タイプ] ステップが追加されます。

出力クエリの変更

CSV Files クエリに戻ると、最後の手順で「テーブルの [Column1] という列 が見つかりませんでした」というエラーが表示されていることがわかります。このエラーの原因は、クエリが前の状態で Column1 という名前の列に対して操作を実行していたことにあります。 しかしながら、[サンプル ファイルの変換] クエリに加えた変更により、この列は存在しなくなりました。 詳細については、「Power Query でのエラーの処理」を参照してください。

ステップ レベルのエラーを含む出力クエリ。

[適用されたステップ] ウィンドウからクエリのこの最後のステップを削除するには、ステップの名前の左側にある [X] 削除アイコンを選択します。 このステップを削除すると、クエリに正しい結果が表示されます。

エラー ステップなしでファイルを結合します。

ただし、ファイルから生成された列 (Date、Country、Units、Revenue) に特定のデータ型が割り当てられていないことに注意してください。 次の表を使用して、各列に正しいデータ型を割り当てます。

列名 データ型
Text
ユニット 整数
Revenue 通貨

各列のデータ型を定義すると、テーブルを読み込む準備が整います。

最終的な結合テーブルのサンプル。

Note

列のデータ型を定義または変更する方法については、「データ型」を参照してください。

検証

すべてのファイルが結合済みであることを確認するには、[Source.Name] 列見出しのフィルター アイコンを選択すると、結合されたすべてのファイルの名前が表示されます。 "リストが完全でない可能性があります" という警告が表示された場合は、メニューの下部にある [さらに読み込む] を選択して、列に使用可能な値を表示します。

結合されたファイルの不完全な一覧。

[さらに読み込む] を選択すると、使用可能なすべてのファイル名が表示されます。

結合されたファイルの完全な一覧。