【AlteryxTips】複数CSVファイルの読み込みを究める

Alteryxにおける複数CSVファイルの読み込み方法を紹介します

データ処理を行うにあたり、複数のファイルを読み込む場面というのはよくあることかと思います。

例えば、同じフォーマットの大量のログファイルを処理するとか、各地域や店舗、部署から渡されたファイルを一括で読み込んで処理をしたい、というケースはままあるかと思います。

ログファイルであれば機械的に出てくるもののため、ほぼ間違いなくフォーマットは同じ、というケースが多く、Alteryxでの一括読み込みではあまり困ることはないかと思います。一方、各店舗や部署からファイルが送られてくる、というケースでは、人が編集したファイルのため人為的ミスが混入するケースが多く、細かな違いやらミスやらを吸収する必要が出てくるかと思います(異なるスキーマのファイルをなんとかうまく読み込めるようにする必要があります)。

今回は、非常に簡単で手軽な方法から、スキーマが変わってもなんとか読み込む方法まで紹介したいと思います。

  1. データ入力ツールでアスタリクス(*)を使った複数ファイル指定の方法
  2. ディレクトリツールと動的入力ツールを使った方法
  3. ディレクトリツールとマクロを使った方法(異なるスキーマも読み込み可能)

 

Infoスキーマとは?

Alteryxでも出てきますがスキーマとは何でしょうか?

スキーマとは、データベースなどの構造のことを言います。例えば、複数のCSVファイルの「スキーマが異なる」というのは簡単にいえば、ヘッダ行の構造(フィールド数)がファイル間で異なるということを言います(本来は、フィールド名や型なども見るのですが、AlteryxでCSVを読み込む場合はフィールド数のみで見ています)。

今回のお題(前提条件)

今回一括で読み込むファイルを準備しました。基本的には、複数地域のファイルを一括で取り込む、ということになりますが、実際の運用のイメージに近づけるため少しずつ細工をしています。

【基本的な部分】

  • 北海道地方、東北地方、関東地方、北陸地方、中部地方、関西地方、中国地方、四国地方、九州地方の9ファイルを読み込みます
  • 基本的にはそれぞれのファイルには「No」「地方名」「都道府県名」というフィールドを持っています

サンプルファイル(関東)

【細工をした部分】

  • 北陸地方のファイルの「都道府県名」フィールドは、「都道府県」に名前を変更しています(他のファイルと比べてスキーマが異なります)

サンプルファイル(北陸)

  • 関西地方のファイルの「No」フィールドは全角大文字の「No」という名前に変更しており、さらに「よみがな」というフィールドを一番→に付加しています(他のファイルと比べてスキーマが異なります)

サンプルファイル(関西)

ポイントとしては、北陸地方、関西地方の2ファイルは他のファイルと比べてスキーマが異なるため、このファイルがどのように扱われるか、ということになります。

それでは、3種類の複数ファイル読み込み方法をご紹介したいと思います。

1.データ入力ツールでアスタリクス(*)を使った複数ファイル指定の方法

概要

いわゆる「ワイルドカード指定」で複数ファイルを一括で読み込む方法です。

手法

通常の「データ入力」ツール上で、ファイル指定後に、「*」を使って複数ファイルの指定を行います。

※これはWindowsでの標準的な指定方法と同様です。「*」(0文字以上の任意の文字)以外にも「?」(任意の一文字を示す)なども利用可能です

 

ワークフロー例(パターン1)

ステップとしては、

  1. データ入力ツールでまず1つファイルを指定する(オプションも含めて設定)
  2. ファイル名を書き換え(固定されていない部分を「*」に置き換え)

となります。

データ入力ツール設定変更

あるフォルダ以下のファイルをすべて読み込みたい、という場合であれば「フォルダ名\*.*」と指定します(サブフォルダも読み込むのであれば、オプションの「サブディレクトリを検索」にチェックを入れます)。

なお異なるスキーマのファイルには注意が必要です。実際に今回のサンプルでやってみると、以下のように警告が出ます。

異なるスキーマは読み込めません

北陸地方のファイルは、他のファイルが「都道府県名」となっているところが「都道府県」となっているだけですが、このような場合はフィールドの位置で読み込まれるようです。

関西地方のファイルは、フィールドの数が異なるため、ファイルの読み込み自体がスキップされてしまいます。

まとめ

この「ファイル名をアスタリクスを使って表現する」方法は、非常に簡単で手間のかからないやり方ですが、スキーマが異なる場合は要注意です(以下に注意点をまとめました)。

注意点
  • フィールドの位置で読み込まれる(フィールド名が異なっても読み込まれます)
  • フィールド数が異なるファイルはスキップされる(読み込まれない)
  • 「ワークフローをエクスポート」機能利用時にyxzpファイルにインプットファイルが含まれない

2.ディレクトリツールと動的入力ツールを使った方法

概要

ひと手間かかりますが、複数ファイルを読み込む際の一般的な手法になります。CSVファイルの場合は、1のアスタリクス(*)を使った方法の方が圧倒的に簡単なためあまりこのやり方はしないかと思いますが、Excelファイルなどでも応用可能な手法ですので、覚えておきましょう。

手法

以下のように、ディレクトリツールと動的入力ツールを組み合わせます。

パターン2 設定

  • ディレクトリツールでは、読み込むファイルがあるフォルダを指定します
  • 動的入力ツールでは、データソース入力テンプレートとデータソースリストを読み込むフィールドを指定します
    • データ入力ソース入力テンプレートは、読み込みたいファイルのいずれかのファイルを指定します
    • データソースリストは、フィールドは、「FullPath」、アクションは「ファイルパス全文を変更」を指定します

 

なお、注意点としては、異なるスキーマのファイルが読み込めないことです。

まとめ

この「ディレクトリツールと動的入力ツールで複数ファイルを読み込む」方法は、若干手間がかかる方法です。「アスタリクス」を使う方法とできることはあまり変わりませんが、読み込むファイルがなくてもエラーが出ない、という特長があります(アスタリクスを使う方法はエラーが出ます)。こちらも同様、スキーマが異なる場合は要注意です(以下に注意点をまとめました)。

注意点
  • フィールドの位置で読み込まれる(フィールド名が異なっても読み込まれます)
  • フィールド数が異なるファイルはスキップされる(読み込まれない)

※ディレクトリツールはAlteryx Serverではご利用できませんので、ご注意ください

3.ディレクトリツールとマクロを使った方法

概要

マクロを使うため、初心者にはハードルが高い方法ですが、異なるスキーマでも読み込める方法で非常に応用が効く手法です。

手法

見た目のワークフローはシンプルになります。

 

パターン3のWF

このCSV読み込みマクロのところがミソです(ディレクトリツールの設定はパターン2と同様です)。

マクロの中身は以下のようなシンプルなマクロです。

マクロ設定

【アクションツールの設定】

  • 「アクションタイプ」は、「値を更新」
  • 「更新する値または属性」は、「File - value="ファイルパス"」

【データ入力ツールの設定】

  • 普通に1ファイルのみ読み込む設定を行ってください(ここで設定した内容がすべてのファイルの読み込みに適用されます ※読み込みのファイルパス以外)

マクロ用データ入力ツール設定

他にも、インターフェースデザイナーでの設定もあります(メニューの[表示]-[インターフェースデザイナー]から表示できます)。

マクロ設定(インターフェースデザイナー)

これでワークフローが完成です。

実際に読み込むと、以下のようになります。ポイントは以下のとおりです。

  • 関西地方のファイルは、スキーマ(項目数違い)で読み込みがスキップされておらず、読み込まれています
    • 「よみがな」の項目が読み込まれています
    • 他ファイルでは半角の「No」ですが、関西地方のファイルは記載通り全角の「No」で読み込まれています
  • 北陸地方のファイルは、他ファイルでは「都道府県名」としていますが、記載通り「都道府県」で読み込まれています

 

マクロを使った読み込みサンプル

ここまで読み込まれていれば、あとはデータクレンジングをしていけば良いだけかと思います。

まとめ

この「ディレクトリツールとマクロで複数ファイルを読み込む」方法は、若干手間がかかる方法です。そもそもマクロを使うため、初心者には少し難しいかもしれません。ただし、スキーマが異なっていても強制的に読み込めますし、カラム同士が入れ替わっているようなファイルにも対応できるため、非常に重宝する方法となります。

注意点
  • Alteryxがおまかせでやっていたこと(ポジション読み込み等)はできないので、フィールド名等異なる場合は、自分でキレイにする必要がある

※ディレクトリツールはAlteryx Serverではご利用できませんので、ご注意ください

まとめ

本記事では、Alteryxで複数ファイルを読み込む方法を紹介しました。

アスタリクス(ワイルドカード)を使った簡易的な方法から、どのようなファイルでも対応可能なマクロを使った方法まで紹介しています。

今回は、CSVファイルを想定して紹介していますが、基本的には他のファイル形式でも対応可能です。ただし、Excelファイルについてはワークブックとワークシートという2つの考え方が出てくるため、本記事よりさらに工夫が必要となります(別途記事で紹介したいと思います)。

複数のエンドユーザーが、手作業で入力していると、同じフォーマットで提出を依頼しても、受け取る際にはヒューマンエラー等によって様々な事象が発生します。そのようなファイルを一括で読み込む際、正しく読み込むには標準的なやり方では対応できないケースが多いので、本記事のような対応で乗り切っていただければと思います。

サンプルワークフロー

複数ファイル読み込み_サンプルWF

処理用サンプルファイル

 

※Alteryx Designer 2019.2.7.63499時点の情報です

Alteryxの導入はぜひKCMEで!

セルフサービスデータ分析ツール「Alteryx」は4週間無償トライアルが可能です。

製品に対する操作方法、技術的な質問などは導入前・導入後に関わらずメールにてお答えします。また、Alteryxを用いた環境構築、開発、ヘルプデスク対応、ハンズオン、トレーニング、ワークフロー作成なども承りますので、お気軽にご相談ください。

おすすめの記事