複数の Excel ファイルから必要なデータだけを Power BI Desktop にインポートしてみる。
Excel.Workbook(Power Query) の引数/binary に File.Contents(Power Query) で読み込んだExcel ファイルを渡すことで解析され読み込みできるようになるのだけど、
まずはこんな感じになる。"名前付き範囲"が取得できているので、ドキュメントによっては印刷範囲も取れます。また、Book / Sheet 範囲の名前付き範囲が同じ名前の場合リネームされてしまうから使う前にはよく考慮しておきたい。
シートをまるっと読み込んでもよいのだけど、加工に手間が掛かる傾向にあるかな。 そして、ナビゲーターでは非表示のシートと非表示のシートにあるテーブルは表示されないけど読み込むことは可能。
とにかくどれかを読み込むと列のデータ型変更(ステップ:変更された型)まで進んでしまうので 、
"ソース"までステップを戻してみるどのように解析されているのかがよくわかる。Kind やItem などでフィルタすることで目的のデータに達することができそう。Data には型:Table としてリンクが用意されている。
で、Excel ファイルをまとめて読む込むにはシーケンシャルファイルのように、Folder.Files(Power Query) → Binary.Combine(Power Query)では解決しないので、どこかで Excel.Workbook(Power Query)を実行する工夫が必要なのである。
同じテーブル定義がされた Excel ファイルが複数あるものとして作業してみる。
まず、Folder.Files(Power Query)ですべてのファイルを読み込む。ポチポチやるなら、[新しいクエリ] - [フォルダ]、Excel 2016 なら [データ]タブ - [取得と変換] - [新しいクエリ] - [ファイルから] - [フォルダから]
Content は Excel ファイルのバイナリなので、これを解析する必要がそれぞれの行ごとで必要。
[列の追加]タブ - [カスタム列の追加] して、Excel.Workbook(Power Query)で解析
列が多いと見づらいので今回は重要な列のみになるようにした。プレビューみると無事取れてる感じ。
追加した列には入れ子になったテーブルがあるのでこれを展開
これで、すべての Excel ファイルの解析が完了し必要なデータにアクセスできそう。データは"Custom.Data" に入れ子のテーブルとなっているのでさらに展開する。
Custom.Item で"テーブル1"を抽出し、Custom.Data を展開
この手順で同一のテーブル定義されたデータを複数のExcel ファイルから抽出することができる。
大事なことなのでもう一度、Excel 2016 の[データ] - [取得と変換] でも同じ作業ができる。
ここでは、Power BI Desktop で説明したけれども、Excel で使うことが意外に多いのではないかと。VBA マクロなど使わずにできますので結構いい感じなはず。ファイルの更新だけではなくファイルの増減、ディレクトリ構造の変更にも対応するし。
0 件のコメント:
コメントを投稿