【実践ガイド】パワークエリでデータ収集:Excel、CSV、PDF、Webデータを簡単に取り込む方法をマスターしよう!(2/11)

パワークエリの最初のステップとなるデータを収集する方法を解説します。ExcelファイルやCSV等からデータを収集する方法を具体的に解説していますので、サンプルデータを元に実際に操作してみましょう。

パワークエリのマスターへの道を切り拓く、全11講座を用意しました!こちらは、その第2回目の講座になります。ぜひ、他の講座も楽しみながらスキルアップを目指してくださいね 他の講座を見るにはこちら

目次

Excelブックからの読み込み方法

Excelのブックからのデータ取り込み方法を学習します。サンプルデータとして以下の3シートあるExcelファイルをパワークエリで取り込みます。

練習用Excelのダウンロード

説明で利用するExcelファイルをダウンロードして実際に操作をしてみましょう。

単一シートの取り込み方法

一つのExcelのシートを取り込む方法です。複数のExcelシートの取り込みは次項で説明しています。

STEP
取り込み元Excelデータの指定

取り込みたいシートが含まれるExcelを指定します。

  1. [データ]タブを選択します。
  2. [データの取得]の上にカーソルを合わせます。
  3. [ファイルから]>[ブックから]を選択します。
  1. 取り込むExcelファイルを選択
  2. [インポート]をクリック
STEP
取り込みシートの指定

上のSTEPで選択したExcel内の全てのシートが読み込まれます。取り込みたいシートを選択します。

  1. 取り込むシートを選択します。(下図の場合は「Sheet1」を選択)
  2. [データの変換]をクリックします。
STEP
データの取り込み

PowerQueryエディターが立ち上がるので、[閉じて読み込む]をクリック

コードを確認しておきましょう。構造を理解しておくと後々の学習が理解し易くなります。

最初のステップ「ソース」を選択すると以下のコード書かれています。これは、一旦は全てのExcelデータを取り込む記述です。Name列にSheet1~Sheet3が表示されていて、Data列にサブテーブルが格納されています。

= Excel.Workbook(File.Contents("C:\パワークエリ\データソース\bookの取り込み.xlsx"), null, true)

次のステップ「ナビゲーション」を選択すると以下のコードが書かれています。Item=”Sheet1″とい引数でsheet1に絞っています。

= ソース{[Item="Sheet1",Kind="Sheet"]}[Data]

この様にステップが積み重なってデータを整形していきます。

データが取り込まれました。

複数シートの取り込み方法

複数シートの取り込み方法を解説します。普通に取り込むだけでは面白くないので、複数のシートを一つに統合してみたいと思います。

STEP
取り込み元Excelデータの指定

取り込みたいシートが含まれるExcelを指定します。

  1. [データ]タブを選択します。
  2. [データの取得]の上にカーソルを合わせます。
  3. [ファイルから]>[ブックから]を選択します。
  1. 取り込むExcelファイルを選択
  2. [インポート]をクリック
STEP
取り込みシートの指定

上のSTEPで選択したExcel内の全てのシートが読み込まれます。

  1. [複数のアイテムの選択]にチェックを入れます。
  2. 取り込むシートを選択します。(下図の場合は「Sheet1、Sheet2、Sheet3」を選択)
  3. [データの変換]をクリック
STEP
ステップの削除

取り込み後はSheet毎にクエリが作られています。適用したステップのソース以外を削除してください。

取り込みを行うコードだけが残り、以下のようなテーブルに変わります。1行=1シートという構造になっています。

Data列の1行目を選択すると、サブテーブルが表示されます。下図の場合だと、Sheet1のテーブルの情報が表示されています。

STEP
シートの統合

3つのシートの統合を行います。

Data列の右にあるアイコンをクリックします。

選択しはデフォルトのまま、OKをクリックします。

3つのシートの情報が一つに統合されました。ただ、ヘッダーが混在したりとまだ使えない状態です。次のステップで整形していきます。

STEP
不要列の削除

不要な列を削除します。緑色になっている列は現在選択されている列です。選択されている列以外を削除する方法です。

  1. [ホーム]タブを選択します。
  2. [列の削除]を選択します。
  3. [他の列の削除]をクリックします。

必要な列に絞ることができました。

STEP
1行目をヘッダーとして使用する

ヘッダーが、Data.Columnxといった形になっているので整形します。1行目がヘッダー情報となっているのでこれを活用します。[ホーム]タブの[1行目をヘッダーとして使用]をクリックします。

1行目がヘッダーになりました。

STEP
不要行の削除

続いて、不要な行の削除をします。他のSheet2,3のヘッダー情報が不要なので削除します。

「氏名」列の右側のアイコンをクリックします。

  1. 不要な[氏名]のチェックを外します。
  2. OKをクリックします。

不要が行が削除され、キレイにSheet1~Sheet3が統合されました。

STEP
不要なクエリの削除

不要なクエリを削除します。

  1. 不要なシートを右クリック(以下の例では、Sheet2を右クリックしている)
  2. [削除]を選択します。

以下は削除された状態でクエリがSheet1だけになっています。

STEP
データの取り込み

PowerQueryエディターが立ち上がるので、[閉じて読み込む]をクリックします。

取り込みが完了しました。

CSVファイルからのデータ取り込み

カンマ区切りCSVファイル(文字コード:シフトJIS)

文字コードがシフトJISのCSVファイルの取り込みを行います。

練習用CSVのダウンロード

説明で利用するCSVファイルをダウンロードして実際に操作をしてみましょう。

メモ帳でCSVファイルを開くと右下に文字コードが表記されています。(シフトJISは、ANSIと表記されます。)

STEP
CSVファイルを選択
  1. [データ]タブを押下します。
  2. [テキストまたはCSVファイルから]を押下します。
STEP
取り込み形式を指定

取り込むCSVファイルを選択すると、以下の画面に遷移します。

  1. 元のファイルで[932日本語(シフトJIS)]を選択します。
  2. コンマ区切りのファイルであるため区切り記号で[コンマ]を選択します。
  3. [読み込み]を押下します。

取り込まれました。

コードを確認しておきましょう。構造を理解しておくと後々の学習が理解し易くなります。

最初のステップ「ソース」を選択すると以下のコード書かれています。

= Csv.Document(File.Contents("C:\パワークエリ\データソース\csv\csv-コンマ区切り-シフトJIS.csv"),[Delimiter=",", Columns=4, Encoding=932, QuoteStyle=QuoteStyle.None])

コードを分解して解説します。

<黄色の内側ブロック

取り込みデータが置いてあるファイルのパスです。

File.Contents("C:\パワークエリ\データソース\csv\csv-コンマ区切り-シフトJIS.csv")

<青色の外側ブロック

Csv.Document関数が使われています。引数として以下を指定しています。

  • Delimiterでカンマ区切り”,”
  • Columnsで4列を指定
  • Encodingで文字コード932を指定
= Csv.Document({ファイルの場所},[Delimiter=",", Columns=4, Encoding=932, QuoteStyle=QuoteStyle.None])

カンマ区切りCSVファイル(文字コード:UTF8)

文字コードがUTF8のCSVファイルの取り込みを行います。

練習用CSVのダウンロード

説明で利用するCSVファイルをダウンロードして実際に操作をしてみましょう。

メモ帳でCSVファイルを開くと右下に文字コードが表記されています。

STEP
CSVファイルを選択
  1. [データ]タブを押下します。
  2. [テキストまたはCSVファイルから]を押下します。
STEP
取り込み形式を指定

取り込むCSVファイルを選択すると、以下の画面に遷移します。

  1. 元のファイルで[65001:Unicode(UTF-8)]を選択します。
  2. コンマ区切りのファイルであるため区切り記号で[コンマ]を選択します。
  3. [読み込み]を押下します。

取り込まれました。

コードを確認しておきましょう。構造を理解しておくと後々の学習が理解し易くなります。

最初のステップ「ソース」を選択すると以下のコード書かれています。

= Csv.Document(File.Contents("C:\パワークエリ\データソース\csv\csv-コンマ区切り-UTF8.csv"),[Delimiter=",", Columns=4, Encoding=65001, QuoteStyle=QuoteStyle.None])

コードを分解して解説します。

<黄色の内側ブロック

取り込みデータが置いてあるファイルのパスです。

File.Contents("C:\パワークエリ\データソース\csv\csv-コンマ区切り-UTF8.csv")

<青色の外側ブロック

Csv.Document関数が使われています。引数として以下を指定しています。

  • Delimiterでカンマ区切りなので”,”を指定
  • Columnsで4列を指定
  • Encodingで文字コード65001を指定
= Csv.Document({ファイルの場所},[Delimiter=",", Columns=4, Encoding=65001, QuoteStyle=QuoteStyle.None])

タブ区切りCSVファイル

タブで区切られたCSVファイルの取り込みを行います。

練習用CSVのダウンロード

説明で利用するCSVファイルをダウンロードして実際に操作をしてみましょう。

メモ帳でCSVファイルを開くとタブになっていることが分かります。今回は文字コードは意識していませんが、シフトJISです。

STEP
CSVファイルを選択
  1. [データ]タブを押下します。
  2. [テキストまたはCSVファイルから]を押下します。
STEP
取り込み形式を指定

取り込むCSVファイルを選択すると、以下の画面に遷移します。

  1. 元のファイルで[932日本語(シフトJIS)]を選択します。
  2. タブ区切りのファイルであるため区切り記号で[タブ]を選択します。
  3. [読み込み]を押下します。

取り込まれました。

コードを確認しておきましょう。構造を理解しておくと後々の学習が理解し易くなります。

最初のステップ「ソース」を選択すると以下のコード書かれています。

= Csv.Document(File.Contents("C:\パワークエリ\データソース\csv\csv-タブ区切り.csv"),[Delimiter="	", Columns=4, Encoding=932, QuoteStyle=QuoteStyle.None])

コードを分解して解説します。

<黄色の内側ブロック

取り込みデータが置いてあるファイルのパスです。

File.Contents("C:\パワークエリ\データソース\csv\csv-タブ区切り.csv")

<青色の外側ブロック

Csv.Document関数が使われています。引数として以下を指定しています。

  • Delimiterでタブ区切りなので=” が指定
  • Columnsで4列を指定
  • Encodingで文字コード932を指定
= Csv.Document({ファイルの場所},[Delimiter="	", Columns=4, Encoding=932, QuoteStyle=QuoteStyle.None])

列が変動するCSVファイル

列が変動するCSVファイルの取り込みを行います。

練習用CSVのダウンロード

説明で利用するCSVファイルをダウンロードして実際に操作をしてみましょう。

シナリオとしては、列数6のデータ取り込みのクエリを作成し、取り込みデータの列が12列に増加した場合どうなるのか、そしてどのように対処していけば良いのか解説します。

STEP
STEP
STEP
列数6のCSVファイルの取り込み

列数6のCSVファイルを取り込みます。以下のコードにて取り込みがされます。

Csv.Document関数が使われいて、引数として以下を指定しています。

  • ファイル「列数6_列が可変.csv」を取り込み
  • Delimiterでカンマ区切り”,”
  • Columnsで6列を指定
  • Encodingで文字コード932を指定
= Csv.Document(File.Contents("C:\パワークエリ\データソース\列数6_列が可変.csv"),[Delimiter=",", Columns=6, Encoding=932, QuoteStyle=QuoteStyle.None])

列数が6のファイル取り込みなので、列数を指定するColumns=6となっている点がポイントとなります。

STEP
列数12のCSVファイルに差し替え

続いて、列数を12のファイルに変更してクエリの更新を行ったらどうなるのか確認してみます。

取り込むソースファイルを以下のように変更します。

変更前変更後
File.Contents(“C:\パワークエリ\データソース\列数6_列が可変.csv“)File.Contents(“C:\パワークエリ\データソース\列数12_列が可変.csv“)

列数12のファイルに差し替えてクエリの更新をします。「プレビューの更新ボタン」を押下します。

列数が6までしか表示されません。

引数がColumns=6となっているので6列までの取り込みになるわけです。

STEP
引数を変更する

列数が増えても取り込めるようにしたいので、以下のように引数をColums=nullに変更します。

変更前変更後
[Delimiter=”,”, Columns=6, Encoding=932, QuoteStyle=QuoteStyle.None][Delimiter=”,”, Columns=null, Encoding=932, QuoteStyle=QuoteStyle.None]
列数の値をnullに変更

変更後に「プレビューの更新ボタン」を押下してクエリを更新すると以下のように12列まで取り込まれました。もちろん13列以上になったとしても取り込まれます。

このように、コードで理解していると応用的な使い方も簡単にできてしまいます。

複数CSVファイルの取り込み

取り込むファイルが複数ある場合でもパワークエリでは簡単に取り込むことができます。

練習用CSVのダウンロード

説明で利用するCSVファイルをダウンロードして実際に操作をしてみましょう。以下3つのファイルを任意のフォルダに保存してください。

STEP
複数ファイルが保存されているフォルダを選択
  1. [データ]タブを選択
  2. データの取得の[ファイルから]を選択
  3. フォルダーからを選択

複数ファイルが保存されているフォルダのパスを指定します。

STEP
複数ファイルの結合

3つのフィアルが取り込まれました。この3つのファイルを結合するには、右下の結合から[データの結合と変換]をクリックします。

3つのファイルのデータが結合されました。また、各ファイルに存在しているヘッダーの削除等が自動で行われます。理想的なデータでない場合は、編集をしてください。

[保存して読み込む]ボタンを押下します。

複数フォルダの取り込みはFolder.Files関数が使われています。

= Folder.Files(“{複数ファイルが保存されているフォルダのパス}”)

エクセルにデータが読み込まれました。

3つのファイルが同じデータ構造であることをパワークエリが自動的に判断してくれているのでワンタッチで複数のファイルの結合が可能になっています。

PDFファイルの取り込み

パワークエリではCSVやExcelデータの他にもPDFファイルを取り込むことが可能です。PDFファイルの取り込み方法を解説していきます。

練習用PDFのダウンロード

説明で利用するPDFファイルをダウンロードして実際に操作をしてみましょう。

STEP
PDFファイルの絶対パスの取得

取り込むPDFファイルの絶対パスをSTEP2以降で利用しますので取得してください。

Windows11の場合は、取り込み対象のPDFファイルを右クリックして「パスのコピー」を押下してください。Windows10以前のOSの場合はShiftキーを押下しながら右クリックをすると「パスのコピー」メニューが表示されます。

STEP
空のクエリを開く

続いて空のクエリを開きます。

  1. [データ]タブを押下します。
  2. [その他のデータソースから]を選択します。
  3. [空のクエリ]を押下します。
STEP
File.ContentsでPDFを指定

File.Contents関数でPDFファイルを指定します。

STEP1で取得したPDFファイルの絶対パスを指定してください。

=File.Contents({PDFファイルの絶対パス})
STEP
新しいステップの追加

[fx]を押下して新しいステップを追加してください。適用したステップに「カスタム1」が追加されます。

STEP
Pdf.Tables関数でPDFデータを変換

カスタム1の中が以下のようになっています。上位ステップのソースをただ読み込んでいるだけです。ソースの中身を変換します。

=ソース

Pdf.Tables関数の中身をソースにします。以下の記述にすれば問題ありません。

= Pdf.Tables(ソース)

PDFの構成要素すなわち中身が表示されます。ためしに2行目のTableを選択してみます。

PDFの中身が表示されます。複雑なPDFでも構成要素毎にデータベース化してくれるので整理がしやすいです。

Web上からの取り込み

パワークエリは、Web上に散らばった様々な形式のデータを取り込むことが可能です。取り込み後に他のデータと結合したりなどができるため使い方次第では大幅な時短が期待できます。

Web上のHTMLテーブルの取り込み

HTML形式で表示されたWeb上のテーブルをデータベースとして取り込みます。

以下のWikipediaに掲載されている各国の実質GDPリストをExcelに取り込みます。

各国の実質GDPリストへのリンク

STEP
Web上のURLを指定
  1. [データ]タブを押下
  2. [Webから]を押下

https://ja.wikipedia.org/wiki/各国の実質GDPリスト を入力

STEP
データの読み込み

サイト上のテーブルがTabletという表記で表示されます。取り込みたいTableを選択して[読み込み]を押下します。もちろん、データの変換でデータの整形をクエリ上で行うこともできます。

読み込むとExcel上にテーブルとして表示されます。Web上からコピペで転記するより正確で簡単です。

Web上のデータが変更れた場合は、更新するだけで最新データが取り込まれます。これがパワークエリの利点です!

Web上のCSVデータの取り込み

CSVファイルとして公開されているWeb上のデータをデータベースとして取り込みます。

TOKYO OPEN DATAというサイトに統計データだCSVファイル形式でアップされています。試しに品川区の避難所の位置情報のデータをパワークエリで取り込んでみます。以下のサイトへアクセスして、CSVファイルのリンクをコピーしてください。

品川区 避難所の位置情報(csv形式)

STEP
Web上のURLを指定
  1. [データ]タブを押下
  2. [Webから]を押下

先ほどコピーした、https://www.opendata.metro.tokyo.lg.jp/shinagawa/2hinansho.csv を入力

STEP
データの読み込み

データを確認して[読み込み]を押下します。もちろん、データの変換でデータの整形をクエリ上で行うこともできます。

読み込むとExcel上にテーブルとして表示されます。

Web上のデータが変更れた場合は、更新するだけで最新データが取り込まれます。これがパワークエリの利点です!

パワークエリ学習コンテンツ

全11回の学習コンテンツでパワークエリを習得することができます。

コメント

コメントする

目次