今回もインターフェースツールのTipsです。
リストボックスツールは複数のアイテムを選択できるツールですが、選択した複数のアイテムに合致するようなフィルタを使ったり、といったサンプルがサンプルワークフローに欠けており、どのようにしたら良いかわかりにくいです。
今回は、リストボックスとフィルターツールを組み合わせて複数アイテムをうまくフィルタする方法について見ていきましょう。
リストボックスに入力アイテム一覧を表示する
リストボックスに表示するアイテムを設定する方法はいくつかありますが、今回は実践的な内容として、インプットデータからのデータを表示してみましょう(これだけで1つのTipsですね・・・)。
外部のリストからリストボックスに表示するアイテムをインプットする場合、以下のようにフィールド名として渡す必要があります(正直ここはあまり直感的ではないように思います)。
例えば、今回は以下のようなインプットデータがあるとします。
これに対して、以下のように接続します。
この時のクロスタブの設定は以下のとおりです。
ポイントは、「列ヘッダーの変更」に、今回リストボックスに表示したいアイテムの元となるフィールドを指定します。
これにより、以下のように無事にアイテムが表示されます。
フィルターツールで複数選択した項目をフィルタできるようにする
それでは、リストボックスツールで選択した複数項目をフィルターツールでフィルタできるようにしていきたいと思います。
まず、以下のようにワークフローを作ります。
リストボックスツールの設定
リストボックスツールはデフォルト設定「ツールモードの選択」ではフィルターツールと噛み合いません。以下のように「カスタムリストの生成」モードで運用する方法があります。幸い、「カスタムリストの生成」のデフォルトオプションで運用可能です。
これはどういうことなのか、少し解説します。「ツールモードの選択」にするとアクションツールには以下のようなデータが流れていきます(GrapeとOrangeとWatermelonにチェックを入れた場合)。
つまり、各アイテムを選択したかどうか、各アイテム名にイコールをつけてTrue/Falseでカンマ区切りで流れてくるわけです。これは、セレクトツールでは受け入れ可能なようですが、フィルターツールの計算式でこのままうまく利用する方法はありません。
今回のような設定にすると、リストボックスで選択されたアイテムがカンマ区切りで入手できます。つまり、以下のような形で得られます。
この形であれば、流れてきた項目がこれらに一致するかどうかは、IN演算子によって判定することができます。つまり、以下のような数式がフィルターツールで利用できればオッケーということになります。
[Item] IN ("Grape","Orange","Watermelon")
これをアクションツールで実現しましょう。まず、その前にフィルターツールを設定します。
フィルターツールの設定
フィルターツールは、アクションツールでまるっと設定を上書きするため、「カスタムフィルター」に設定してください。適当なアイテムがフィルタされるような設定にしておきましょう。
アクションツールの設定
前週のTipsでやった内容がそのまま当てはまるのですが、アクションタイプは「フォーミュラで値を選択」を選択します。また、「更新する値または属性」は、「Expression – value」を選択。
肝心のフォーミュラ式は、以下のようにします。
'[Item] IN ('+[#1]+')'
ここがポイントで、[#1]は、アクションツールに接続したリストボックスツールから流れてくるデータが入るところです。つまり、カンマ区切りで選択したアイテムが来ます。その前後をカッコで囲んで、IN演算子で判定したいフィールドをその前に記載すると上のような式になるわけです。
アクションツールの時点では、フィルターツールを書き換えるための文字列を作っているので、ここでは文字列として作りましょう。そのため、クォテーションで囲った形になっています。
つまり、以下のような形で式を作るとアクションツールではエラーとなります。
[Item] IN ([#1])
実際に動かした結果
実際に動かすと以下のようにしっかりフィルタがかかっていることが確認できます。
まとめ
リストボックスツールとフィルターツールを使い、複数選択の場合にうまくフィルターさせる方法をご紹介しました。サンプルが少ない内容のため有効活用していただければと思います。
サンプルワークフローダウンロード
次回
次回はアセット管理のお話です。
コメント