AlteryxのPythonツールで定数を受け取る

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

こんにちは小澤です。 先日、Rツールで設定値を受け取る話を書いた際に、ワークフロー定数というものを紹介しました。

今回は、これのPythonツールでの使い方を見ていきたいと思います。

受け取れる定数を確認する。

Pythonツールでは内部でJupyter Notebookが動いているため、インタラクティブに確認しながら処理を実装できます。 また、入力コネクションや定数としてどのようなものが利用可能か確認する関数も用意されています。

まずは入力コネクションに関す情報は以下のように利用可能です。

定数の情報を取得するには、getWorkflowConstantNames関数またはgetWorkflowConstants関数を利用して取得します。

定数名を指定して、値を取得するにはgetWorkflowConstant関数を利用します。

Rツールの場合「%User.UserConstant1%」のように「%」で囲ったものが丸々置き換えられるという動きをしていました。 Pythonツールでは、そのような動きをするわけではなく、上記の関数を使って一度値を取得するという違いあります。

インターフェースツールの設定値を受け取るには?

さて、上述の方法で、EngineおよびUser定数は取得可能です。 しかし、Version 2019.1現在、このやり方にQuestionは対応していません。 そのため、Analytic AppやマクロでPythonツールを使おうと思うと困ったことになります。

それを回避する方法がコミュニティで紹介されていました。

そのやり方は、インターフェースツールで設定された値を一度データとして取得してしまう、というものです。

以下のようなワークフローを用意します。

Text Inputツールは以下のようにそれぞれのインターフェースに対応した列と適当な値を入れています。

インターフェースツールに対するActionツールのは以下のようにそれぞれに対応させた、列の1件目のデータを書き換えるという処理にしています。

Text BoxやRadio Buttonなどはこれでいいのですが、複数の値が指定可能なList Boxツールに関しては同じことができないため、列の値を指定して置き換えています。

まずは一旦この状態で、Analytic Appとして適当な値を入れて実行してみましょう。 なお、List Boxの値は手動で設定ています。

この状態での実行結果は以下のようになります。

この結果はFormulaツールで変数として取得した時などと同様、以下のようになっています。

  • Text Box : 実際に入力された値
  • Radio Button : 選択したものはTrue, していないものはFalse
  • List Box : 全項目に対して選択の有無のTrue/False

さて、ここまでくればあとはもう想像がつく方も多いかと思います。 あとはこれをPythonツールで入力データとして受け取って値を取得します。

以下は簡単なサンプルです。

DataFrameとして取得したデータからdf.iloc[0][<項目名>]のように指定して、設定値を取得しています。

先ほどと同じ設定でAnalytic Appを実行した結果は以下のようになります。

この例では、取得した値を確認するためにDataFrameにして出力していますが、個々の値は変数として取得で来ているので設定値としてそのまま利用可能な状態になっているのが確認できるかと思います。

おわりに

今回は、AlteryxのPythonツールからワークフロー定数を取得する方法を解説しました。 Questionに関しては、現段階(2019.1です!)ではそのまま取得できないため、代替手段を紹介しました。

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

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

alteryx_960x400