Alteryxの反復マクロでnの階乗の計算 – Weekly Challenge #74

2020.07.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、最近Alteryxに触れる機会が減ってAlteryx力が低下してきたスズです。Alteryx力を向上させたい、そんなときに最適な学習コンテンツWeekly Challengeで、再度Alteryxについて学んでいきたいと思います。

以前挑戦したWeekly Challengeにnの階乗を計算するというものがあります。

以前挑戦した際は標準マクロで解答しましたが、今回は反復マクロを使って解答してみます。

動作環境

当エントリの執筆には、以下の環境を利用しています。

  • Windows 10 Pro
  • Alteryx Designer 2020.2.3.27789 日本語版

Challenge #74: Build a Factorial Calculator

お題

今回挑戦するお題はこちら。

今回のWeekly Challengeでは、nの階乗を計算します。階乗とは、

1! = 1 = 1
2! = 2 * 1 = 2
3! = 3 * 2 * 1 = 6
4! = 4 * 3 * 2 * 1 = 24

というように、nから1までの整数の掛け算を行います。

今回のWeekly Challengeには、出題として以下のデータが用意されています。

「Number」フィールドにあるそれぞれの数値に対して階乗の計算を行い、「Factorial」フィールドに出力します。

解答

今回の解答で作成したワークフローはこちら。誕生日ケーキのアイコンが作成した反復マクロです。反復マクロにデータを入力する前に、結合ツールでデータを加工しています。

結合ツールでは、出題として用意されているデータを結合ツールの2つの入力アンカーに接続し、同じデータを持つフィールドが2つ存在する状態にします。2つ目のフィールドにはこの後に接続する反復マクロで階乗の結果を出力していくため、データ型をInt32型に、フィールド名を「Factorial」に変更しています。

結合ツールで作成したデータは以下のようになっています。このデータを反復マクロに入力します。

反復マクロの中身は以下のようになっています。

反復マクロに入力されたデータは、フィルターツールに設定した条件によって振り分けます。条件には[Number] != ([Engine.IterationNumber] + 1)と設定しています。

[Engine.IterationNumber]は、反復回数を出力する定数です。0から始まるため、([Engine.IterationNumber] + 1)と計算しています。「Number」フィールドの数値と一致しない場合は処理を繰り返し、一致した場合は反復を終了する、という動作を想定しています。

フォーミュラツールでは[Factorial] * ([Engine.IterationNumber] + 1)という計算を行い、「Factorial」フィールドを更新するように設定しています。計算を反復することで、最終的に階乗の計算結果が出力されることを想定しています。

作成した反復マクロを使って計算すると、以下の結果が出力されました。Weekly Challengeに用意されている答えと一致していることを確認して、完成です。

最後に

今回は反復マクロの作成に挑戦しました。バッチマクロや反復マクロはAlteryxの便利な機能ですが、慣れていないと作成するのはなかなか難しいものかと思います。今後もマクロを作成する機会を設けて、慣れていきたいと思います。

Alteryxの導入なら、クラスメソッドにおまかせください

日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。

alteryx_960x400