データが複数のエクセルファイルに分かれているから1つにまとめて読み込みたい、、1ファイルづつInputツールで読み込んでUNIONは冗長だしファイルが多いと非現実的。そんな時に
よしDynamic Input!!
いくつあるか分からないデータを一気に読むならまず思いつくのは「Dynamic Input」です
今回は月ごとに分かれた5つのExcelデータ(シート名は同じ)を読込んでいます
Dynamic Inputのいけてないところ
先のエラーもその類のエラーなのですが、 読み込むファイルが同じフォーマットになっていないと「Dynamic Input」はデータを読み込んでくれません。律儀ねDynamic Input…
大抵データは”似て非なるもの”
そんな都合のいいデータばかりだったら苦労しません。
読み込むデータが1つのファイルならともかく、ファイルが分かれてくると「データは同じフォーマットにしてね」なんてどこ吹く風。
人の手でメンテしたりしていると 微妙に違ってきちゃうのが現実です。
例えば
- 同じデータを指すのになぜかファイルでカラム名違う
- 同じカラム名だと思ったら空白(スペース)はいってるじゃん
- 「ー」が「-」「―」だとか「-」だとか
- データの列の位置が1列ずれてるよ
- このふぁいるだけ非表示列があるぞ、、、
- 改行コード入ってんなこれ
- etc…etc………………………
データ自体を一見したところで分からなかったりするのでAlteryxで読み込んでみて始めて気付いてこんな顔 (  ̄- ̄)トオイメ
細かいことは後にしてとりあえず読み込みたい
何でもいいからとりあえずデータを読んでくれないと先に進まない。。。細かい違いは後のフローで吸収じゃ!読み込まないとETLも何もないでしょと。
いろいろ調べてみるとどうも Alteryx Macro の出番のようです。AlteryxGalleryで公開されているMacroなども試してみましたが、微妙に かゆいところに 手が届かなかったので作ることにしました(初 Alteryx Macro)
Multi Excel Macro
今回作ったMacroは以下の動作ができるようにしました。Macroにすることで各ファイルの細かい型を無視し、とりあえず文字列型でまとめて読み込んでくれます。少々強引ですが読み込みさえできればその後で調整できるので。
- 1つのエクセルファイル中の複数のシートにまたがるデータを読み込める
- 複数のエクセルファイルから、複数のシートにまたがるデータを読み込める
- 読み込むシートを指定ができる(指定がなければ全部読む)
始めにDirecroty Toolで読みたいエクセルが入ったフォルダを指定します。ここで読んだFullPathカラムを後のフローで使います。
Multi Excelの最低限の設定は1つ前のフローで取得したエクセルのフルパスをもつカラムを①で指定するだけです。②~④は通常のInput Toolでエクセルファイルを読み込むときにも使うオプションです。読み込み開始行などを設定します。
一番下のオプション⑤は読み込むシートを限定する場合に読み込むシート名を記入します正規表現での指定が可能ですデフォルト値の「.*」場合全てのシートを読み込むので特に限定しない場合はそのままで。
実行すると無事に読み込めました
最後に
Multi Excelマクロは各エクセルの各シートを読み込む作り上Multi Excelマクロの中から別のMacroを読み込んでいるためInportするとそのマクロを含む2つのマクロが出てきますがワークフローの中で直接配置するのは1つです。Alteryx Garraryで公開しています。