Free Trial

ナレッジベース

エキスパートから学ぶ。

異なるフィールド スキーマを持つ複数ファイルの読み込み方法

Community_Admin
Alteryx
Alteryx
Created

異なるフィールドのスキーマで複数ファイルを読む

 

この記事は CS マクロ 開発シリーズの一部です。  このシリーズの目標は、有効な動的マクロを発達させるためのヒントやこつ、考え方についてご紹介することです

 

ご自分のローカルドライブ上またはネットワークロケーション上で1つのフォルダ内の複数ファイルを読み込む際、ディレクトリツールは大変有効です。ファイルパスのリストがあれば、動的ツールを使用するか、バッチマクロを作成してこれらのファイルをすべて読み込むことができます。 

 

動的入力ツールは、すべてのファイルが同じフィールドスキーマを持っている場合に使用できます。 

 

しかし、フィールドスキーマが違う場合、フルファイルパスの読み込みに動的入力ツールを使用する際に下のような警告が表示されます。

 

結果として、複数のファイルを何度も同時に呼び出すために使用できるシンプルなバッチマクロを作成することができます。 

 

Reading Field schema 1.png

 

 

マクロの内側ー最初のステップはワークフローを作成することです。

 

1) 入力ツールを使用し、読み込みたいファイルを1つ選択します。この例では.xlsxファイルを使用していますが、読み込みたいファイル形式を何でも選択できます。ただし、読み込もうとするファイルは全て同一のファイル形式でなければなりません。

 

2) 入力ツールの上にコントロールパラメーターを追加します。これで、マクロの外で1度に1つのファイルパスを通過することができます。このツールでは構成は不要です。

 

3) コントロールパラメーターの「Q」から入力ツールのライトニングボルトにドラッグします。これでアクションツールに追加します。アクションツールで、構成ウィンドウのファイルパスをハイライトします。

 

これで構成ウィンドウの一番下の「特定のストリングを交換する」オプションに追加されます。以上により、コントロールパラメーターを通る値は入力ツールで交換されることになります。 

 

4) 入力ツールにマクロ出力を追加します。こうすることで、もとのワークフローにマクロからデータが戻っていくようになります。 

 

2018-11-14_12-54-26.png

 

 

 

次に、ビュー>>インターフェースデザイナー(ID) に行き、IDウィンドウの左側にあるコグアイコンをクリックします。

 

2018-11-14_12-56-42.png

 

 

出力モードで、オプションを次のように変更します:

 

― 名前別の自動設定(すべての反復が実行されるまで待機)ー 名前による自動構成は、同じ名前のフィールドを結合させます。

 

ー 位置別の自動設定(すべての反復が実行されるまで待機)ー 位置別の自動設定はフィールド1等を 読み込んだ各ファイルの同じ位置に結合します。

 

 

2018-11-14_12-57-55.png

 

これで、動的入力で示された警告を解除することができます。 

 

ワークフローにマクロを挿入

 

1) ファイル>>新規保存 - アクセス可能な場所にマクロを保存してください。コントロールパラメーターとマクロ出力を追加したので、Alteryxはこれがマクロワークフローであることがわかります。 

 

2) 新しいキャンバスで右クリックし、キャンバス>>挿入>>>マクロと進みます。

 

3) ファイルのリストを読み込んでいる場合は、ディレクトリツール でファイルの入ったフォルダにアクセスすることができます。

 

4) これはxlsxファイルの例なので、各ファイルにシート名を付ける必要があります。別のファイル形式を読み込んでいる場合は、このステップは必要ありません。

 

5) 制御パラメーターを設定し、「フルパス」を選択します。

 

2018-11-14_13-02-01.png

 

 

ワークフロー例(バージョン11.0)が添付されています。これをテンプレートとして使用していただけます。 

 

バッチマクロを作成したい場合は、弊社のオンデマンドトレーニングウェブページにわかりやすい動画を掲載しています。http://www.alteryx.com/on-demand-training

 

*このマクロはテスト済ですが、すべてのシナリオで正しく動作するとは限りません。スレッドにコメントいただければ喜んでお手伝いします。

 

今後ともよろしくお願いします。

 

Jordan Barker

クライアントサービス担当

添付