目的
前回に引き続きマクロの応用を行いたいと思います。
今回ですが任意の四則演算を行うマクロを作成します。
通常であれば、フォーミュラツールを用いて行えば簡単です。しかし、ここで計算式の変更や追加項目の増減を行う場合フォーミュラの設定を変更したり、ワークフローの改修作業が発生します。そこでエクセルなどに記載した設定を元に四則演算の計算式を変更し、追加項目を簡単に増減できるようにします。
Step1. 必要な方法を考察する
では、まずどの様な事が必要かを考えます。
四則演算の計算式を変更する、これはバッチマクロなどでも可能です。しかし、通常のアクションツールでの更新では追加項目の増減には対応できません。
そこでフォーミュラで生XMLを更新を用います。
ここで追加項目を計算項目に使う場合を考えます。フォーミュラツールでは追加項目を計算に使う場合、順番が大事になってきます。ですので設定を記載する時には計算順番の記載も必要になります。
Step2. 前述を踏まえて設定ファイルを考える
以上の事を踏まえて設定に何が必要かを考えます。
①フォーミュラで新規追加・もしくは変更されるカラム名の指定
②四則演算の「+」「-」「*」「/」の指定
③計算に用いるカラムの指定
④計算順の指定
以上の4つが明記され、かつAlteryxで取り込みを行いやすく、XMLの生成が可能、かつ設定が分かりやすい形式で設定ファイルを考えます。
今回は以下のような形式のエクセルにしてみました。
Alteryx内部カラムの項目が①に当たります。四則演算は「+」「*」「/」の3つを選択性にし、計算対象カラムの頭文字に-をつけた場合は対象カラムの-1を掛けて計算する事で引き算、-乗算出来るようにします。計算対象カラムはD列以降に記載したものを対象とします。計算順は数字で記載します。
XMLを生成する
まず、フォーミュラツールに適当な計算式を入力しXMLビューでXML構造を確認します。
XML構造はこの様になります。この構造の中のFormulaFileldのXMLを生成し更新するマクロを作成すればいい事が分かります。
次に設定ファイルを読み込みXML文を作成するワークフローを作ります。
設定ファイルを読み込み四則演算ごとに分岐を行いXMLを生成します。
各四則演算ごとのXMLを計算順番でソートしXMLを1つに生成しなおします。
これでXMLの生成は完了です。
マクロ作成
次にマクロを作成します。構造は単純です。
マクロはフォーミュラツールのXMLを更新するだけのマクロで行えます。
動作確認
ワークフローの全体図
実行結果
結果を確認すると、A以外は設定ファイル通りに計算されています。では何故のみ計算結果が21になっているかというと、フォーミュラツールでは既存のカラム更新の場合、データ型を変更できません。XML上でDouble型に設定しても、反映されず既存のデータ型を引き継ぎます。今回入力に使ったデータはByte型の為、小数点以下が四捨五入され21になります。データ型をマクロに入れる前にDouble型に変更すると20.625で計算されます。この様に既存の項目を更新する場合には元データのデータ型にも注意が必要です。
今回のマクロの紹介は以上となります。XMLも用いる事でマクロ自体は単純でも、応用の効いた処理が出来ることが分かったと思います
添付