Alteryxのマクロは様々な事が出来ますが、汎用力が高いマクロを作るには多種多様に渡る方法を理解していないと作成が困難な物があります。
今回はバッチマクロなどで用いられるアクション「フォーミュラで生XMLを更新」を用いるマクロを作成してみましょう。作成するマクロは集計ツールを使って、全ての文字列をグループ化し、重複レコードを削除するマクロを作成してみます。
通常のマクロの組み方
まず、AとBの2つの項目を持つデータを集計するマクロを作ってみます。単純に作るなら次の様になるのではないでしょうか
コントロールパラメータを用いて集計する項目を変更するマクロです。この時集計対象のフィールド指定と出力時の項目名が必要なため、1つの項目につき2つのアクションが必要となります。
しかしこの作りでは項目名の増減に対応できません。そこで用いるのが「フォーミュラで生XMLを更新」になります。
生成XMLのフォーマットを確認する
まず、生成するXMLのフォーマットを確認します。Alteryx上で使われるツールのXMLを確認するには、「オプション」→「ユーザ設定」→「ユーザ設定の編集」→「詳細」→「プロパティウィンドウにXMLを表示する」にチェックを入れます。
この設定にすることでXMLの確認が出来るようになります。
それでは追加されたXMLビューで集計ツールのXMLを確認して見ます。
XMLを確認すると Filed action rename の3つを指定する形のXMLだと分かります。この構文に沿って動的に項目のXMLを生成します。
XMLの生成
データから項目名を抽出しXML生成を行う部分を考えます。データの項目名を抽出するにはフィールド情報ツールが簡単です。
項目名の抽出が終わったら、次にフォーミュラツールでXMLにします。
この時XML内に”を含めたいので文字列の指定は’で囲むことで行います。次に生成したXMLを繋げていきます。集計ツールを用い、文字列の連結を区切り記号なしで行います。
これでXMLの作成はできました。次はマクロ部分を作成していきます。
XMLマクロを作成する
マクロですが、先ほど作成したバッチマクロを改良します。
コントロールパラメータはXMLの場合1つで問題ありませんのでアクションツールは1つになり、単純化されます。更新対象は生成したXMLにより変わりますが、今回の場合ですと<SummarizeFields></SummarizeFields>の間の値を更新することになりますのでSummarizeFieldsを選択し内部XMLを更新を選択します。
これでマクロは完成です。
動きを確認する
では作成したマクロを組み込んで動かしてみます。
実行すると重複レコードがグループ化されました。
ではこの様なマクロを実際にどの様な場面で使うかを見てみましょう。
フォルダ内のCSVファイルの重複レコードを削除し別フォルダに出力するワークフロー
これは筆者が実際に業務上で求められて作成したAlteryxアプリです。機能は単純でフォルダ配下のCSVを個々に読み込み、重複データを削除し別フォルダに同名で保存するだけの簡単なWFです。まず、最初に上記で作成したWFを改良し、マクロに作り替えます。
入力ファイルと出力ファイルのフルパスを指定する形でマクロにしました。作成したマクロをワークフローに組み込みアプリ化します。
これで指定したフォルダ配下のCSVから重複レコードを除いたCSVを任意フォルダに出力フォルダに出力するAlteryxAppが完成しました。
この様にマクロを「フォーミュラで生XMLを更新」で作成することで、従来のマクロ作成では困難な動的な動きをするマクロも簡単に組むことができます。
作成・動作確認バージョン
Alteryx Designer 2021.1.4.26400