はじめに
弊社では昨年からAlteryxを導入しています。複数のCSV・Excelファイルからデータを読み取ることが頻繁にあるので、備忘録として残しておきます。
CSVファイルの場合
マクロの作成
まず下図のように1つのCSVファイルからデータを読み込むマクロを作成します。ここで使用しているツールは、コントロールパラメーター、アクション、マクロ出力、データ入力です。
アクションのアクションタイプにおいて「値を更新」を選択してください。
ワークフローの作成
次に、作成したマクロを使って複数のCSVファイルを読み込むワークフローを作成します。
あるフォルダにCSVファイルがすべて保存されているとすると、ディレクトリツールを使ってCSVファイルパスのリストを取得してマクロに渡し、読み取られた各ファイルのデータを複数結合ツールを使って行方向に結合します。
Excelシートの場合
マクロの作成
複数のエクセルシートを読み込む場合も、CSVファイルの場合と同様に、まず一つのシートからデータを読み込むマクロを作成します。
アクションツールのアクションタイプは、CSVファイルの場合と同様に「値を更新」を選択してください。またデータ入力ツールでExcelファイルを選択したら、オプションの「テーブルまたはクエリ」において「シートを選択」を選んでください。
ワークフローの作成
複数のExcelシートからデータを読み込む場合、下図のようにマクロに渡すまでの部分がCSVファイルの場合と異なります。
まずデータ入力ツールでエクセルファイルを指定するときに、「テーブルまたはクエリ」で「シート名のリストのみをインポート」を選択してください。
次にフォーミュラツールに以下の式を入力して、各シートのファイル名を作成します。
全てのシートからデータを読みこむ場合は、下図のようにフォーミュラツールから直接マクロへコネクタを接続してしまって問題ありません。
一方、特定のシートのみ読み込みたい場合は、フィルターやリストを用いて読み込みたいシートのみを選択する必要があります。ここでは、あらかじめ読み込みたいシート名をリストとして入力しておき、結合ツールの内部結合を使うことでそれらのシート名に一致するもののみをマクロに渡す方法を説明します。
最初の図のようにテキスト入力ツールを使って読み込むシート名のリストを作成します。ファイルパスと比較する場合、シート名は文字列でなければならないので、セレクトツールを使ってデータ型を文字列にしておきます。
次に、結合ツールをつかってシート名のリストに含まれるシートのパスのみを選択します。結合ツールのLとRにシートリストとエクセルファイルからのコネクタをそれぞれ接続し、「特定のフィールドで結合」で比較する列名を選択します。
そして結合ツールのJとマクロをコネクタで接続すると、指定したシートのパスがマクロに渡されてデータが読み込まれます。
別の方法
下記のように動的入力ツールを使って読み込む方法もあります。