Alteryxで複数のExcelを一気に読み込む

データが複数のエクセルファイルに分かれているから1つにまとめて読み込みたい、、1ファイルづつInputツールで読み込んでUNIONは冗長だしファイルが多いと非現実的。そんな時に


よしDynamic Input!!

いくつあるか分からないデータを一気に読むならまず思いつくのは「Dynamic Input」ですDynamic Input
今回は月ごとに分かれた5つのExcelデータ(シート名は同じ)を読込んでいます

Alteryx Designer x64 - Dynamic Inputで複数エクセルを読み込む
はい、エラー^^ (ここで読めるならこの記事いりません)

Dynamic Inputのいけてないところ

先のエラーもその類のエラーなのですが、 読み込むファイルが同じフォーマットになっていないと「Dynamic Input」はデータを読み込んでくれません。律儀ねDynamic Input…

読み込みエラーの詳細
とにかく諸々の理由で読み込めないんだと。。。

大抵データは”似て非なるもの”

そんな都合のいいデータばかりだったら苦労しません。
読み込むデータが1つのファイルならともかく、ファイルが分かれてくると「データは同じフォーマットにしてね」なんてどこ吹く風。
人の手でメンテしたりしていると 微妙に違ってきちゃうのが現実です。

例えば

  • 同じデータを指すのになぜかファイルでカラム名違う
  • 同じカラム名だと思ったら空白(スペース)はいってるじゃん
  • 「ー」が「-」「―」だとか「-」だとか
  • データの列の位置が1列ずれてるよ
  • このふぁいるだけ非表示列があるぞ、、、
  • 改行コード入ってんなこれ
  • etc…etc………………………

データ自体を一見したところで分からなかったりするのでAlteryxで読み込んでみて始めて気付いてこんな顔 (  ̄- ̄)トオイメ


細かいことは後にしてとりあえず読み込みたい

何でもいいからとりあえずデータを読んでくれないと先に進まない。。。細かい違いは後のフローで吸収じゃ!読み込まないとETLも何もないでしょと。

いろいろ調べてみるとどうも Alteryx Macro の出番のようです。AlteryxGalleryで公開されているMacroなども試してみましたが、微妙に かゆいところに 手が届かなかったので作ることにしました(初 Alteryx Macro)

Multi Excel Macro

Multi Excel

今回作ったMacroは以下の動作ができるようにしました。Macroにすることで各ファイルの細かい型を無視し、とりあえず文字列型でまとめて読み込んでくれます。少々強引ですが読み込みさえできればその後で調整できるので。

  1. 1つのエクセルファイル中の複数のシートにまたがるデータを読み込める
  2. 複数のエクセルファイルから、複数のシートにまたがるデータを読み込める
  3. 読み込むシートを指定ができる(指定がなければ全部読む)

始めにDirecroty Toolで読みたいエクセルが入ったフォルダを指定します。ここで読んだFullPathカラムを後のフローで使います。

Directory Toolで読み込みたいExcelのフルパスを取得

Multi Excelの最低限の設定は1つ前のフローで取得したエクセルのフルパスをもつカラムを①で指定するだけです。②~④は通常のInput Toolでエクセルファイルを読み込むときにも使うオプションです。読み込み開始行などを設定します。
一番下のオプション⑤は読み込むシートを限定する場合に読み込むシート名を記入します正規表現での指定が可能ですデフォルト値の「.*」場合全てのシートを読み込むので特に限定しない場合はそのままで。

Multi Excelで全てのExcelを読み込み

実行すると無事に読み込めました

全てのExcelデータの読み込み完了

最後に

Multi Excelマクロは各エクセルの各シートを読み込む作り上Multi Excelマクロの中から別のMacroを読み込んでいるためInportするとそのマクロを含む2つのマクロが出てきますがワークフローの中で直接配置するのは1つです。Alteryx Garraryで公開しています。