ログファイルは テキスト形式 で CSV などにフォーマットされているから、複数のログファイルのETLを一気に実施してしまってもよい場合が多い。ヘッダが固定されていれば、Binary.Combine で結合後 Table.SplitColumn で分割すればよい。
Folder.Files なのだけど、リボンからポチポチすれば事足りるので、
[ホーム]タブ - [データを取得 / 新しいソース] - [さらに表示]
Excel 2016 の場合、[データ]タブ - [取得と変換] - [新しいクエリ] - [ファイルから] - [フォルダーから]
フォルダを指定
指定のフォルダに存在するファイルすべての情報がテーブルとして取得
ここでファイル名、フォルダパス、ファイル更新日時などからフィルタすれば、以降の作業で必要なファイルのみの作業ができる。"Attributes"を展開すれば別なフィルタリングは可能。Content Type などが使えそうかな。
"Content"がファイルへのリンクなので、[バイナリの結合] を実行
バイナリ結合しただけなので、1列のテーブルに
区切り記号による分割
区切り記号に使用する文字を指定。任意の文字は"カスタム"で指定
"左端~"、"右端~" や "詳細設定オプション"を使用すると一部だけ分割などできる。
ヘッダ行などが残るのでフィルタ
インポートするログの特徴から、フィルタを適用するフィールドやその条件を充分に考慮する必要がある。
フィールドのデータ型を適するものに変換し作業完了
例外が発生する可能性があれば、対応する変換は忘れずに。
以上の手順で、Folder.Files に指定したパスに存在するファイルは同じステップで処理が行われ、アウトプットは結合されたテーブルになる。
Excel (Power Query)を使用した場合でも同じ結果が得られ、VBA マクロ などによる処理は不要でパス内に存在するログファイルすべての読み込みができる。
0 件のコメント:
コメントを投稿