Alteryxで標準マクロを作ってワークフローを再利用してみよう!

『今日からはじめるAlteryx再入門』アドベントカレンダー14日目!
2020.12.14

こんにちは。アドベントカレンダーはじめまして、データアナリティクス事業本部のまつおかです。

当エントリは2020年アドベントカレンダー『今日からはじめるAlteryx 再入門』の14日目のエントリになります。

このアドベントカレンダーの企画は、Developers.IOにてAlteryxの情報をお届けしてきたメンバーによるAlteryxを1から学べるシリーズになっています。Alteryx触ってみたい!という方の入門記事として、Alteryx使っているけど改めて基礎から学びたい!という方の再入門記事としてご活用いただければ幸いです。

14日目の今日は「標準マクロ(Standard Macro)」をご紹介します。
マクロってなんとなく敷居が高いとお感じの方にも、便利なマクロを使用していただくきっかけになればと思います。

マクロとは

繰り返し同じ処理をする場合や、毎回同じ処理手順を踏む場合に、その都度同じワークフローを作成するのではなく、あらかじめ決まったワークフローをひとつのツールに組み込み再利用できる形にしたものです。

Alteryxでは4種類のマクロを作成することができます。

今回はこれらの中でマクロの基本となる「標準マクロ(Standard Macro)」のご紹介となります。

マクロの作り方

マクロは普段どおり標準ワークフローや分析アプリを作成し、動作確認してからマクロに変更する手順がわかりやすくてお勧めです。ワークフローをマクロに変更するには、2つの方法があります。

ワークフローのタイプを変更する

ワークフローの設定(ワークフローのツールではない何もないところをクリックすると見ることができます)にある「データ型」を「マクロ」に変更することでワークフローをマクロに変更することができます。

マクロで使用するツールをワークフローに配置する

また、以下のマクロ内で使用するツールをワークフローに配置すると、自動的にマクロに変更されます。

  • マクロ入力(Macro Input)
  • マクロ出力(Macro Output)
  • コントロールパラメーター(Control Parameter) ※バッチマクロのみで使用可能

上記いずれかの方法で作成したマクロは、保存するとファイルの拡張子が「.yxmc」となります。

では実際に標準マクロを作成してみましょう!

標準マクロサンプル その1:
郵便番号から市区町村を取得

「住所を使って市区町村レベルで集計したいが、住所には番地まで入っているのでそこから市区町村を抜き出したい」といった場合、郵便番号を使って市区町村の情報を取得することが可能です。
こちらの処理をマクロにしてみました。

使用データ

マスタとなる郵便番号データは 郵便局のダウンロードサイト から取得しました。

こちらのデータにはヘッダー情報がなく、データのみが入っています。

各列の項目は 郵便番号データの説明ページ にある「郵便番号データファイルの形式等」で確認できます。

また、市区町村を取得したい元データは、サンプルとして以下のような診療所のデータを用意しました。ここにある郵便番号を使って市区町村のデータを取得できるマクロを作成したいと思います。

まずはワークフローを作成

作成したワークフローはこちら。

診療所データの郵便番号は区切りのハイフンあり、郵便番号データはハイフンなしのデータなので、①でフォーミュラツールを使用し診療所データの郵便番号からハイフンを除きます。

また、郵便番号データは不要な列を除き、動的リネームツールを使用して項目名を付与します。今回は郵便番号、都道府県、市区町村のデータのみを使用します。

②で不要な列を除外し、

③のテキスト入力ツールに項目名を入力、

④の動的リネームツールで項目名を付与します。

動的リネームツール(Dynamic Rename)についてはこちらのブログを参考にしてください。

最後に⑤のユニークツールを使って郵便番号がユニークになるようなデータにしています。同じ郵便番号でも複数の市区町村が含まれている場合があるようで、郵便番号がユニークではないデータになっていますが、今回はこのあとの結合ツールで出力が重複することを避けるため暫定的に郵便番号でユニークにしました。ちなみに、ユニークツールを使用した場合、重複する行は最初に出てきた行が残る仕様となっています。

これで診療所データと郵便番号データが結合できる状態になりましたので、⑥の結合ツールでデータを結合し、市区町村データを取得します。

こちのワークフローを実行した結果が以下となります。都道府県と市区町村が取得できていることが確認できます。

ワークフローをマクロに変換

では先程作成したワークフローをマクロに変換してみましょう。その前に、現在のワークフローの設定が「標準ワークフロー」であることを確認しておきます。

まずはテキスト入力ツールの診療所データをインプットとなるようマクロ入力ツールに変換します。マクロ入力ツールに変換するには、テキスト入力ツールを右クリックし「マクロ入力に変換」を選択するだけ、とても簡単です!

アイコンがマクロ入力ツールに変わり、ワークフローも「標準マクロ」に変わっているのが確認できました。

次に出力のマクロの出力を設定します。取得した市区町村データをマクロの出力としますので、インターフェースタブにあるマクロ出力ツールを、結合ツールの「J」に接続します。

これでこのワークフローはもう立派なマクロです!

なのですが、ちょっと待ってください。結合ツールで郵便番号データと結合しましたが、もしかして結合しなかったデータがあるのでは?と思い結合ツールの「L」のアンカーを確認したところ・・・

ありました。郵便番号データと結合できなかったデータが。。。

ということで、この仲良くなれなかったデータも出力しておきましょう。

結合ツールの「L」にもマクロ出力ツールを接続し、出力が2つになったことでどの出力か判断できるよう「J」に繋いだ側を「結合」、「L」に繋いだ側は「非結合」という出力名に変更しました。また、それぞれアンカー省略形も設定しています。こちらの設定は任意ですが、設定することでマクロを使用する際マクロツールの出力アンカーに文字を表示することが可能になります。(一文字のみ)

あとは名前をつけて保存すれば、市区町村取得マクロの完成です。

使ってみる

では実際に使ってみましょう。

まずはマクロに渡すデータを用意します。今回はマクロ作成時に使用した診療所データをテキスト入力ツールに入れて配置しました。

今回作成したマクロは、入力データに「郵便番号」の項目さえあれば、どんなデータでもちゃんと処理してくれます。それはマクロ作成時の⑥結合ツールで「*Unknown」にチェックを入れているからなのですが、そちらについては以下のブログを参照ください。

次に先程作成したマクロツールを配置します。

マクロを開いた状態であれば、配置したいワークフロー上で「右クリック>挿入>マクロ」をクリックすると、先程作成した「市町村取得」マクロが表示されますので、そちらをクリックします。

マクロが閉じられた状態であれば「右クリック>挿入>マクロ」を選択すると、マクロファイルを選択するダイアログが表示されますので、そこから対象のマクロを選択します。

そしてインプットのデータと接続すれば、もうこれで実行可能な状態になりました。

こちらを実行すると、「O」のアンカーからは無事結合できたデータが、「N」のアンカーからは残念ながら結合できなかったデータが出力されます。

標準マクロサンプル その2:為替換算

では次は、インターフェースツールを使ったマクロを作成してみます。
入力された数値データを、指定された通貨から、指定された通貨に換算した結果を返すマクロです。

全体のワークフローはこちら。

今回為替は 「Foreign exchange rates API」 というAPIを使用しました。こちらのAPIを使用することで、原通貨と換算通貨を指定し最新の為替を取得することができます。

最新の為替を取得できるリクエストURLはこちらになります。

 https://api.exchangeratesapi.io/latest

このリクエストURLにパラメーターとして原通貨(base)と換算通貨(symbols)を渡すと、baseの通貨を基準にsymbolsの通貨為替を取得することができます。

パラメーターを付加したURL例はこちら。

 https://api.exchangeratesapi.io/latest?base=JPY&symbols=USD

※ 通貨情報:Euro foreign exchange reference rates

上記のAPIに希望する通貨を渡すため、インターフェースツールの中の ドロップダウンツール を配置して原通貨と換算通貨を選択できるようにします。

①のドロップダウンツールのリストにはそれぞれ通貨を入力します。

次に②のテキスト入力ツールにURLを入力し、

③の2つのアクションツールでそれぞれ「原通貨」と「換算通貨」を更新するよう設定します。

ここで完成したURLを④のダウンロードツールに渡すと、APIが実行され応答データが返されます。返ってきたデータはこちら。

DownloadDataに必要なデータが含まれていますが、今回使用しているAPIは応答データがJSON形式ですので、ダウンロードツールの次にある⑤のJSONパースツールを使って扱いやすいデータに分離させます。

AlteryxでのAPI実行については、本アドベントカレンダー7日目でも紹介していますので参考にしてください。

JSONパースツールで分離させたデータはこのような形になります。

必要なのは1行目のrateですので、サンプリングツールで1行目だけを取得し、インプットとして用意したテキスト入力ツールに⑥のフィールド付加ツールを繋ぎ為替を結合します。

そして⑦のフォーミュラツールで為替換算をし、ドロップダウンツールから原通貨と換算通貨を取得して・・・

次のセレクトツールで項目の並べ替えを行ってでき上がったデータがこちら。

入力した金額と、指定した通貨で計算した結果が出力されています。

あとはインプットに使用したテキスト入力ツールをマクロ入力ツールに変更し、最後に出力ツールを繋げば完成です。

実際にこのマクロを使用する際は、設定のところでドロップダウンリストが表示され、それぞれの通貨を選択してから実行します。

マクロは好きなアイコンに変更可能

さて、ここまでマクロの作成方法をご紹介しましたが、作成したマクロのツールアイコンを見てみると、どれも青丸のアイコンになっていることにお気づきでしょうか。
マクロはデフォルトで青丸のアイコンが設定されていますが、こちらは自由に変更することが可能です。

「表示」メニューにある「インターフェースデザイナー」にチェックを入れると以下のようなウィンドウが開きますので、左下の「プロパティ」を選択すると表示される画面でアイコンのカスタマイズが可能です。せっかく作ったマクロですので、ぜひ独自のアイコンを設定してみてください。マクロを使用する際もわかりやすくてお勧めです。

さいごに

マクロの作成方法はなんとなくわかっていただけたでしょうか。
あとは実際に作ってみるのみです。

まず手始めに簡単なマクロを作ってみてください。あれこれマクロにして再利用したくなりますよ!

ご参考までに、こんなブログもありますので見てみてください。

ではでは、2020年アドベントカレンダー『今日からはじめるAlteryx 再入門』の14日目はこれにて終わります。明日以降もお楽しみに~!!