
Alteryxで複数のファイルをまとめて取り込む方法
こんにちは、DI部の兼本です。
データの分析を行う際、元になる集計データが必ずしもひとつのファイルに纏まっているとは限りません。そこで今回はAlteryx Designerを使って、複数のファイルをまとめて取り込む方法をご紹介します。
STEP1:ひとつのExcelファイルを取り込む
まずはAlteryx Designerでデータを取り込む方法の基本についておさらいしておきます。Designerではデータを入力するためのツールとして「Input Data」というツールを用意しています。
例えば、東京の2017年1月の天気を日別に集計した下図のようなExcelファイルを取り込みたい場合、以下の操作を行います。
-
- 「Input Data」ツールをワークフロー上に配置

-
- 「Connect a File or Database」プロパティで対象のExcelファイルを選択

-
- Excelファイル選択後に表示されるダイアログで取り込みたいシート(今回の場合は「東京」)を選択

-
- これでExcelファイルのデータを取り込むことができます。下図では取得したデータを確認するために「Browse」ツールを配置しています。

以上の手順で、ひとつのファイルを取り込むことができました。とても簡単ですね。
STEP2:複数のExcelファイルを取り込む
では、同じフォーマットを持つ複数のファイルを取り込むにはどうすればいいでしょうか。 例えば、
<ファイル名>_YYYYMMDD.xlsx
というファイル名は、何らかのシステムで定期的にバッチ生成されるファイルなんかでよくあるやつなので、馴染みのある方も多いのではないでしょうか。
複数のファイルを取り込む方法はいくつかありますが、データを結合する「Union」ツールを使えば、個別に取り込んだファイルを行追加(データ追加)することができます。

実際に「Union」ツールを使用すると、以下のようなワークフローになります。

ただし、この方法はファイルの数が増えてくると、ツールを配置するレイアウトを考えるだけでも一苦労で、日々増えるデータを扱うには適していません。

今回の例で言えば、2017年の12ヶ月分のデータを取り込むとこんな感じになってしまいます。やり遂げた感はすごいですが、生産性が高いとは言い難いですね。
実は、このような場合は、「Input Data」ツールでファイル名をワイルドカードで表現するだけで、ファイルをまとめて取り込むことができてしまいます。

これに関しては、こちらの記事に詳細が記載されていますのであわせてご覧ください。
STEP3:条件に一致するファイルだけを取り込む
取り込むファイルを特定条件で絞り込む場合は、先ほどご紹介した記事でも説明されている「Direcotry」ツールと「Dynamic Input」ツールの組み合わせで実現可能です。


特定のディレクトリ配下にあるファイル一覧を取得
「Directory」ツールを使うと、特定ディレクトリ配下にあるファイルの一覧を取得することができます。

同時にファイルの作成日付やサイズなどの属性情報を取得することができますので、これらの情報を元にして取り込むファイルを絞り込むことができます。
例えば、以下の例では「C¥..¥..¥気象情報¥日別」というフォルダ配下にあるファイルのうち、「気象情報東京*.xlsx」に一致するファイルの一覧を取得します。

属性情報から取り込むファイルを絞り込み
「Directory」ツールで取得したデータに対して「Filter」ツールを使うと、作成日時が特定の日付範囲に一致する場合のみを選択するようなフィルタリング処理ができます。
以下の例ではファイルの作成日付が2018年8月1日から2018年8月31日に一致するファイルのみを選択しています。
また、Excelファイルを読み込む場合はファイル名に加えてシート名を指定する必要があるので、「RegEx」ツールを使用してファイル名の最後にシート名を付与する処理を追加します。
AlteryxではExcelシート名は以下のように表現しています。
<ファイル名>.xlsx|||<シート名>
ファイルリストから一括読み込み
フィルタした結果のファイルの一覧からデータを読み込むために「Dynamic Input」ツールを使用します。
- 「Input Data Source Template」には雛形となるファイルを指定します。
- 「Read a list of Data Sources」として、「Fullpath」フィールドを指定します。
- 「Action」として「Change Entire File Path」を選択します。
これで複数のExcelファイルをまとめて読み取る処理を実現することができました。
ところで、ファイル作成日付などはファイルが更新されてしまうと変わってしまうため、ファイルを後から差し替えるような運用を考慮しておく必要があったりします。
例えば、以下のデータは2017年1月の東京の気象情報を1日1ファイルでまとめたCSVファイルですが、ブログ執筆のために作成したデータなので、ファイル作成日付が2018年8月23日になっており、ファイル作成日付からデータの日付範囲を絞り込むことができません。
いろいろなやり方があると思いますが、今回は以下のようなワークフローで処理を実現しました。
ワークフローの各ステップについて簡単にご説明します。
-
- 「Direcotry」ツールを使用してファイルの一覧を取得します。今回は「気象情報_東京_*.csv」という条件に一致するCSVファイルを取得しています。

-
- 「Text To Column」ツールというテキストデータを指定したデリミタで分解するツールを使用しています。今回のファイルは名称が「気象情報_<地域>_<年月日>.csv」という構成なので、3つに分解します。

-
- 分解したデータのうち、「年月日」を含むデータから日付データを作成するため、「Formura」ツールを使用します。最初にLEFT関数を使用して「.csv」という文字列を除外し、その後、DateTimeParse関数を使用して日付型のデータを作成して新しく「myDate」というフィールドを作成しています。

-
- 日付データができれば、あとはいつも通りに「Filter」ツールで日付範囲による絞り込みが可能となります。

いかがでしたでしょうか。Alteryx Designerで複数のファイルをまとめて取り込む方法についてご紹介をいたしました。
皆さんのワークフロー作成の参考になれば幸いです。
Alteryxの導入なら、クラスメソッドにおまかせください
日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。