
初めに
こんにちは! y-tanakaです!
私の記事では、データ分析初心者である私がAlteryxを勉強していく中でポイントだと思った知識についてをまとめます。
そのため、内容は技術的というより、私と同じようにAlteryx勉強を始めたばかりの人向けのものとなっております。
今回は、リストボックスツールでフィルターをかける方法についてです。
分析アプリの勉強の中でも、インターフェースツールとアクションツールの設定はややこしく、苦戦することがあると思います。
本記事では、その中でもリストボックスツールとそれに接続するフィルターツールの設定についてを解説します。
リストボックスツールとは?
まずは簡単に、リストボックスツールについて解説をします。
このツールは、Alteryxのマクロや分析アプリにリストを追加して、ユーザーが項目を複数選択できるようにします。
詳しい使い方については、こちらの記事もご参照ください。
サンプルのワークフローについて
基本データとフロー
本記事で使用する基本となるデータとワークフローは以下の通りです。

「デバイス」という第一カテゴリに、デスクトップPC、ノートPC、スマートフォンの3つのデバイスを、
「利用場所」という第二カテゴリに、会社、外出先、自宅の3つの場所をそれぞれ入力しています。
利用場所は、それぞれ2つのデバイスに合うように設定し、合計6つのデータとなっています。

ワークフローでは、このデータを入力した後、2つのフィルターツールから、デバイスと利用場所で分岐するように設計しています。
このワークフローを実行すると、出力されるデータは、
「デバイスの条件で当てはまるもの」AND「利用場所の条件で当てはまるもの」
という結果になります。
例えば、最初のフィルターで「デバイスはデスクトップPCかスマートフォン」、次のフィルターで「利用場所は会社か自宅」と設定して実行すると、結果は以下のようになります。

リストボックスツールとアクションツールの設定
今回使用するリストボックスツールは、この2つのフィルターツール上にそれぞれ配置します。
注意するのは、リストボックスツールに繋ぐアクションツールの設定についてです。
例えば、デバイスのフィルターツールの条件文が

このようになっていて、リストボックスツールで更新したいのは、どのデバイスか指定する、()の中身です。
ですので、アクションツールでは

このように、フィルターツールの条件文に対して、()の中身である「"デスクトップPC"」を更新するように設定します。
そして、分析アプリそのものの設定として、インターフェースデザイナーのウィンドウから、

このように、成功した場合に最後に繋いだ閲覧ツールの結果を表示する設定を付けます。
この分析アプリを実行すると、以下のように選択するポップアップ画面が表示されます。

ここで先ほどと同じように、「デバイスはデスクトップPCかスマートフォン」、「利用場所は会社か自宅」と設定して実行すると、結果も先ほどと同じものになります。

以上が、基本データやワークフローの設定についてです。
ここから、リストボックスツールでこの条件を変更できる選択肢の作り方について解説していきます。
選択肢の作り方
手動で選択肢を作成する方法
まずは、シンプルにリストボックスツールの設定から、手動で選択肢を作る方法を解説します。
「手動で値を設定(名前:値 -1行で一つ)」という設定は、その下のプロパティ内で、選択肢を手動で作成していく方法です。
デバイスに関するフィルターに繋いだリストボックスツールには、このように、

3つのデバイスをそれぞれ一行ずつ記述すると、これが選択肢として追加されます。
設定が簡単というメリットはありますが、選択肢が多い場合はそれを全て記述するのが大変になるというデメリットもあります。
外部ソースから選択肢を作成する方法
「外部ソース - NAME && VALUEフィールドを含む必要があります」という設定は、別のファイル(外部ソース)から選択肢を作成する方法です。
この時、外部ソースとなるファイルは、設定名にも記載されている通り、NAMEとVALUEというフィールド(列)を持っていないといけません。

外部ソースの設定は、下のプロパティの項目から、外部ソースに使用するファイルのパスを指定します。
外部ソースファイルはこのように用意します。

「NAME」には「ユーザーに表示される選択肢」を用意し、
「VALE」には「データ抽出時のフィルタ条件などに使うコードやキー」を用意します。
この方法の場合、「手動で設定」するのと違い、ユーザーへ表示する選択肢と、選択した際に扱うデータ(コードやキー)の値を変えることができます。
例えば、ユーザーに見せる選択肢は「desktop」に対し、フィルターツールの条件に使うのは「デスクトップPC」、といった感じです。
接続ツールから選択肢を作成する方法
「接続ツールからフィールドを取得」の設定は、リストボックスツールに他のツールとコネクタを繋ぐと自動で設定されます。

この時繋ぐデータは、以下のように、

元データから対象となる項目のリストを作成し、データ用に複製し、クロスタブツールで横持ちのデータにします。
これで、「デスクトップPC、と選択されたらデスクトップPCという値のものを」という選択肢を作成することができます。
ここで設定しているデータは、前述の「外部ソースの設定」で外部ソースファイル内にNAMEとVALUEを設定したのと同じで、
列名にはユーザーに表示する選択肢、値にはツールにかけるコードやキーとなっています。
注意事項
選択肢が増減する場合の動的な反映について
接続ツールから選択肢を作成する方法について、1点注意事項があります。
それは、『選択肢元となるインプットデータが増減した場合、一度ワークフローを実行しないと、選択肢が自動で追加されない。』
という点です。
例えば他の2つの方法にて、
手動で選択肢を作る方法では、デバイスを設定するリストボックスツールに新しく「タブレット」という項目を追加したり、
また、外部ソースから作成する方法では、デバイスマスタに新しく「タブレット」という項目を追加したりすると、
分析アプリでもその結果が反映され、タブレットの選択肢も表示されます。
一方、接続ツールから作る方法では、選択肢の元となるインプットデータに新しく「タブレット」という項目が追加されても、分析アプリ上ではその選択肢が反映されない状態となります。
反映させるには、分析アプリのワークフローを開いて、実行させる必要があります。
選択肢を動的に絞っていく方法について
上記のようなワークフローの分析アプリの仕様では、
『デバイスと利用場所の選択肢を同時に選んで、条件に合うデータをフィルターする』
という流れの処理になっています。
これを、例えばデバイスを「PC」と選択した後は、利用場所の選択肢には「会社か自宅」の2つのみ現れるといった、
『最初にデバイスの選択肢を選び、その中で存在する利用場所の選択肢を選んで、条件に合うデータをフィルターする』
という仕様にするためには、チェーンアプリにする等の方法が必要になります。
チェーンアプリについては、以下の記事を参考にしてみてください。
【AlteryxTips】チェーンアプリで動的なフィルタを利用する
まとめ
簡単に選択肢を作成するなら「手動」で。
選択肢のマスタが外部に存在するなら「外部ソース」から。
データ内で選択肢を作成するなら「接続ツール」から。
と、このように、状況に合わせて設定することができます。
(※リストボックスツールには他にもいくつか設定はありますが、あまりメジャーな方法ではないため、本記事では省略いたします)
運営会社