【AlteryxTips】チェーンアプリで動的なフィルタを利用する

Alteryxのチェーンアプリを用いた、動的に変化するフィルタを実現する方法を解説します

 

Alteryxの分析アプリでは、利用ユーザー側でファイルを指定したりフィルタ条件を変更してワークフローの実行を行うことができます。しかしながら、普通に作成すると様々な制限があります。

今回は、その制限と制限なしにできるチェーンアプリ(Chainned App)をご紹介します。

 

今回のサンプル

今回は、コンピュータ製品を販売する会社の売上データを使って、カテゴリごとのレポートを作成するようなワークフローを運用していきたいとします。そのカテゴリですが、カテゴリ1、カテゴリ2とあり、カテゴリ1とカテゴリ2は以下のように構成されているとします。

カテゴリ1 カテゴリ2
Hardware Desktop PC
Hardware Note PC
Hardware Option
Software Office
Software Security

カテゴリ1、カテゴリ2に対してそれぞれフィルタをかけるワークフローを作ってみると以下のようになります。

Chainnedになる前のアプリ

ユーザーインターフェースは以下のとおりです。

 

チェーンアプリではないパターン

ここでは、3つのインターフェースが実装されています。

最上段がファイル指定です。

真ん中がドロップダウンボックスで、カテゴリ1から1つ選択(今回だとHardwareとSoftware)するようになっています。

最下段がリストボックスで、カテゴリ2から複数選択できるようになっています。

ここで先程の表を見ると、カテゴリ1でHardwareを選択すると、カテゴリ2はDesktop PC、Note PC、Optionの3つのみが表示されるのが理想的です。しかしながら、ここではカテゴリ2がカテゴリ1で選択した内容に関わらずすべて表示されています。

結論としては、通常のワークフローの範囲で動的なフィルタを利用したワークフローを作ることはできません。理由として、各インターフェースの情報はワークフロー実行時に更新されるようになっているためです。

 

チェーンアプリ化する

それでは、ここでの目標となる「動的なフィルタ」を実現するための方法を紹介したいと思います。これを実現するためには、チェーンアプリという機能を使う必要があります。

 

チェーンアプリのメカニズム

チェーンアプリは、一つ前の分析アプリで次の分析アプリ入力ファイルを作ります。

これは、インターフェースツールの値の更新がワークフローを実行する時と、外部ソースを参照している時のみだからです。

また、分析アプリには、実行が成功すると次の分析アプリを実行するという機能があり、この2つの組み合わせによりチェーンアプリが実現されています。

 

実際の動きとしては、以下のようなイメージとなります。

チェーンアプリイメージ

さて、このイメージを実際の分析アプリに適用してみましょう。先程の分析アプリですと以下のように分割可能です。

分析アプリ分割イメージ

 

実行に成功した際に次のチェーンアプリを呼び出す方法

まず、「実行に成功した際に、次のチェーンアプリを呼び出す方法」をご紹介します。

これにはインターフェースデザイナーで設定を行う必要があります。

メニューの[表示]-[インターフェースデザイナー]から設定画面を開くことができます。その後、左端の一番下にあるアイコンの「プロパティ」を開きます。

インターフェースデザイナーのプロパティ

ここで、「成功した場合 - 別の分析アプリを実行する」にチェックを入れ、実行したいアプリのファイル名を記載します(自動的に相対パスで記述されます)。

今回は、分析アプリ1、分析アプリ2で次に開く分析アプリを指定する設定が必要です。

 

分析アプリ1

分析アプリ1の要件としては、以下のとおりです。

  • ファイル読み込み
  • 簡単なETL処理(カテゴリ分割、データ型変更)
  • 分析アプリ2で使う入力データの作成
    • 分析アプリ2へ渡すメインデータ
    • 分析アプリ2のドロップダウンツール用ファイルの作成
  • 実行に成功したら、分析アプリ2を開く

 

ここでポイントは、分析アプリ2へ渡すメインデータとドロップダウンツール用ファイルの作成です。

実際のワークフローは以下のようになります。

分析アプリ1のワークフロー

まず、分析アプリ2へ渡すメインデータは、読み込んでETL処理を行ったデータをそのままyxdb形式等で保存すれば良いです。なお、速度的にyxdb形式が高速なのでこちらを推奨としたいと思います(他の形式でもチェーンアプリの構築はできますが、Alteryx専用のデータ形式であるyxdb形式は、読み込み・書き込みが高速でデータ型等もAlteryxの内部で持っているものをそのまま保存してくれます)。

 

分析アプリ2のドロップダウンツール用ファイルについて

ここは少し詳しく解説を行います。インターフェースツールのうち、ドロップダウンツール、リストボックスツールが外部ファイルを参照する場合、決まったフォーマットで保存する必要があります。

ツールの説明には「外部ソース - NAME && VALUEフィールドを含む必要があります」とわかりにくい記載ですが、つまり言い換えるとフィールド名が「NAME」と「VALUE」となっているファイルであれば良いということになります。具体的には、集計ツールの設定を以下のようにして作成しています。

 

集計ツール設定(分析アプリ1)

これにより以下のようなアウトプットが得られます。これをyxdb形式で保存しています(ファイル名:ChainnedApp1_dropdownforApp2.yxdb)。

 

集計ツール結果1

 

分析アプリ2

分析アプリ2の要件は、以下のとおりです。

  • ドロップダウンツールで指定した値でカテゴリ1をフィルタリング
  • 分析アプリ3で使う入力データの作成
    • 分析アプリ3へ渡すメインデータ
    • 分析アプリ3のリストボックスツール用ファイルの作成
  • 実行に成功したら、分析アプリ3を開く

 

実際のワークフローは以下のようになります。ここでのポイントは、フィルタをかける部分でしょうか。ユーザーインターフェースツールに慣れていないとわかりにくい部分です。

 

分析アプリ2ワークフロー

ドロップダウンツールでフィルタリング

ドロップダウンツールの設定は以下のとおりです。

ポイントはリストの値に「外部ソース」を選択、プロパティに分析アプリ1で作成したファイル「ChainnedApp1_dropdownforApp2.yxdb」を指定します。

ドロップダウンツール設定

アクションツールの設定は、フィルタツールの設定にも影響を受けます。

まず、フィルタツールの設定ですが、基本フィルターを使用します。基本フィルターでフィールド名は「カテゴリ1」を指定、演算子としては「等しい」、値はここでは仮に「Hardware」としています。

フィルタツール設定

次に、アクションツールの設定です。アクションタイプは「値を更新」とし、更新する値または属性については、「Operand - value」を選択します。

アクションツール設定

これにより、現在「Hardware」と記載している値を書き換えることになります。ドロップダウンツールは、選択した一つの値だけを返すため、その値で直接値を書き換えることができます。

なお、フィルターツールが「カスタムツール」の場合はアクションツールの指定方法が異なりますのでご注意ください(ここでは説明を省きます)。

 

リストボックスツール用のファイルの作成は、分析アプリ1のドロップダウンツール用ファイルの作成と同様です。

集計ツール設定

分析アプリ3

分析アプリ3の要件は、以下のとおりです。

  • リストボックスツールで指定した値でカテゴリ2をフィルタリング
  • 本ツールの主目的のレポーティングを行い結果を出力します

実際のワークフローは以下のようになります。フィルタツールより右の部分はメインの処理部分です(今回は本筋ではないのであえてツールボックスを閉じています)。

分析アプリ3

ここでもポイントはフィルタをかける部分ですので、注目して見ていきましょう。

 

リストボックスツールでフィルタリング

リストボックスツールの設定は以下のとおりです。

一番のポイントは、デフォルトの「ツールモードの選択」ではなく「カスタムリストの生成」を選択することです。この部分の設定は、チェックを入れて選択したものがどのような形式で返ってくるか、というところを決める設定となります。例えば、「Office」「Security」にチェックを入れている状態で、「ツールモードの選択」にしていると「Office=True,Security=True」という値が返ってきます。

しかしながら、これをこのまま使うのは難しいので、「カスタムリストの生成」を選択すると扱いやすいです(開始テキスト、区切り記号、終了テキストはデフォルトで設定されている値を使用します)。これにより、「Office」「Security」にチェックを入れれば「"Office","Security"」という値が返ってきます。

リストの値は「外部ソース」を選択、プロパティに分析アプリ2で作成したファイル「ChainnedApp1_listboxforApp3.yxdb」を指定します。

 

リストボックスツール設定

次に、フィルタの設定を行います。

フィルタ設定

ここでは、カスタムフィルターを用い、

[カテゴリ2] IN ("Desktop PC")

という計算式を使用しています。

IN演算子により、[カテゴリ2]の値がカッコで囲まれたもののいずれかに該当すればTrueとなります。リストボックスツールから返ってくる値が今回「"Office","Security"」のような形で返ってくるように設定したため、カッコ内の文字列をそのまま書き換えることができればOKです。

 

最後にアクションツールの設定です。今回は「フォーミュラで値を更新」を使ってみましょう。「フォーミュラで値を更新」オプションは、式をまるごと書き換えます。この時に演算子を使って式を組み立てます。

 

アクションツール設定

今回は、

'[カテゴリ2] IN ('+[#1]+')'

という式としています。

この中で[#1]というのは、アクションツールのインプットの番号を示しています。つまり、今回であればリストボックスツールと接続しているので、そのデータが[#1]となります。実際に動作する段階になると、リストボックスツールで「Office」「Security」を選択した場合は[#1]は「"Office","Security"」で置き換えられますので、「[カテゴリ2] IN ("Office","Security")」という計算式になり、この式を使ってフィルタツール内で判定が行われます。

 

実際に動かしてみる

それでは、実際に動かしてみます。まず、最初の分析アプリ1を動かします。

分析アプリ1

ここでは、ファイルの読み込みを行います。内部的には、次の分析アプリのために、ドロップダウンツール用の参照用外部ファイルと、次のツールに渡す用のファイルを作成します。

分析アプリ2では、カテゴリ1に対してフィルタをかける値を選択します。今回は、「Software」を選択します。

分析アプリ2

内部的には、次の分析アプリのために、リストボックスツール用の参照用外部ファイルと、次のツールに渡す用のファイルを作成します。

そして、これが最後の分析アプリ3です。ここでは、カテゴリ2のフィルタ項目の選択とラストの出力まで作成します。

分析アプリ3

「Security」を選択して実行すると、「Software」の「Securiy」項目のみでフィルタをかけたレポートが出力されます。

最終結果

できあがったファイルはこちらです。

最終結果

 

まとめ

チェーンアプリについて解説をしました。

  • 動的なフィルタを利用可能なワークフロー
  • サーバーでも利用可能

チェーンアプリの作り方のポイントはこちら。

  • 実行が成功したら指定したワークフローを起動する機能を利用
  • ドロップダウンツール、リストボックスツール用の外部参照ファイルを、利用する一つ前のワークフローで作成する
  • 次の分析アプリに渡すようのデータファイルを作成

 

若干手間はかかりますが、ユーザーフレンドリーなインターフェースを持つワークフローが作成可能ですので、ぜひ取り入れてください。

 

 

サーバーにアップロードする際の注意点

AlteryxServerでチェーンアプリを使う場合は、途中のテンポラリのファイル(今回で言えば、分析アプリ2,3で使用するインターフェースツール用のファイルと、メインのデータ2つの合計4ファイル)もアップロードに含めてください。

 

確認方法として、サーバーに保存する際に、「ワークフローアセットを管理する」から確認が可能です。

Serverに保存

アセット管理の画面では「ツール別にアセットをグループ化する」オプションにチェックをつけると、より詳細に確認可能です。

アセット管理

ここでは、

  • ChainnedApp2.yzwz
  • ChainnedApp3.yxwz
  • ChainnedApp1_dropdownforApp2.yxdb ・・・ 分析アプリ2のドロップダウンツール用ファイル
  • ChainnedApp1_listboxforApp3.yxdb ・・・ 分析アプリ3のリストボックスツール用ファイル
  • ChainnedApp1_datatemp1.yxdb ・・・ 分析アプリ2のメインデータ
  • ChainnedApp1_datatemp2.yxdb ・・・ 分析アプリ3のメインデータ

という6つのファイルがアセットとして認識されていればOKです。テンポラリファイルも含めなければ、Server側がファイルを見失ってしまうようです。

※うまくいかない際は英語版に切り替えてみてください

サンプルワークフローダウンロード

ChainnedApp_sample

 

 

※Alteryx Designer Version 2021.2.2.45235時点の情報です

Alteryxの導入はぜひKCMEで!

セルフサービスデータ分析ツール「Alteryx」は4週間無償トライアルが可能です。

製品に対する操作方法、技術的な質問などは導入前・導入後に関わらずメールにてお答えします。また、Alteryxを用いた環境構築、開発、ヘルプデスク対応、ハンズオン、トレーニング、ワークフロー作成なども承りますので、お気軽にご相談ください。

おすすめの記事