ユニオンツールで複数列のフィルタ/並べ替え #Alteryx

2023.03.06

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

ユニオンツールを使用した複数列のフィルタ/並べ替えの手順です。

前提条件

下記の環境で検証しています。

  • Windows 10 Pro
  • Alteryx Designer 2022.3.1

複数列のフィルタ/並べ替え

Alteryxで列の並び替えやフィルタを行う際は、セレクトツール動的セレクトツールを使用できます。しかし、入力データセットの列数が多い(数100を超える など)場合、下記のように、これらのツールによる作業が難しくなることがあります。

  • セレクトツール
    • すべての列選択や強調表示した列の選択/選択解除機能を使用しても、列数が多い、列が規則的に並んでいない場合は、列単位で設定する必要がある。
  • 動的セレクトツール
    • 条件式やフィールドタイプの一括指定が適用できる列構成でない場合、セレクトツールを使用することになる。
    • 列の並べ替えは行えない。

そこで、ここではユニオンツールを使用した方法をご紹介します。

ユニオンツール | Alteryx Help

名前による自動設定 オプション

ユニオンツールでの列のフィルタ/並べ替えには、「名前による自動設定」オプションを使用します。このオプションの特徴は、下記の通りです。

  • 入力データセットの列名に基づき、各データセットを縦に結合
    ※列名の大文字小文字は区別されません。
    Alteryxで大文字小文字を含む文字列を扱う際の注意点 | DevelopersIO
  • 出力列順は、ツールに一番初めに接続したデータセットの列順となります
    →列の並べ替えに利用可能
  • さらに「フィールドが異なる場合」のオプションを「フィールドの共通サブセットを出力」とすると、入力データセットすべてに共通する列のみの出力とできます
    →列のフィルタとして利用可能

これらより、ユニオンツールに列のフィルタや並べ替えを行いたいデータセットと、出力したい列形式のデータセットを接続することで、セレクトツールと同様の処理を行ってくれるというものになります。

サンプルワークフロー

例とあわせて設定をご紹介します。ここでは、アンケートデータを並べ替えるという設定です。
サンプルデータの内容は下記の通りです。

  • 100行201列のデータ
    • 1列目:アンケートのモニタID
      →各行が一人のモニタの回答を表します
  • アンケートの質問は100問
    • 2-101列:アンケートの回答ラベル
       ※ここでは、質問番号と回答を連結した文字列
    • 102-201列:アンケートの回答(1 or 0)

モニタIDと回答ラベルの一部

Untitled

アンケート回答の一部

Untitled

目標は、アンケートの回答ラベル・回答順に列が並んでいるデータを、下記のように、質問番号順に表示し、かつ回答ラベル・回答順に並べ替えるとします。

Untitled

質問数が100あるので、セレクトツールで並べ替えるには面倒なため、ユニオンツールを使用します。これにあたり、下記のように並べ替えたい順の列ヘッダのみからなるデータを用意します。

Untitled

下図の通り、ユニオンツールに接続します。

  • #1 接続
    • 並べ替えたい順の列ヘッダのみからなるデータ
    • データは0行
  • #2 接続
    • 並び替え対象のデータ(アンケートデータ)
  • ユニオンツールの設定

Untitled

ユニオンツールでは、「名前による自動設定」を選択します。フィールド名が異なる場合のオプションを「フィールドの共通サブセットを出力」とすることで、並び替えと同時に、列のフィルタを行うことも可能です。

注意点として、ユニオンツールにはじめに接続するデータは、並べ替えたい順の列ヘッダのみからなるデータとなるようにしてください。
ユニオンツールでは、設定左下の「入力データセットの出力順序を設定する」オプションでレコードの出力順を制御できますが、「名前による自動設定」時の出力列順は、ツールにはじめに接続したデータの列順となるためです。

下記はワークフロー実行後の、ユニオンツールの出力メタデータの一部です。ユニオンツールにはじめに接続したデータセットの列順に出力されていることがわかります。

さいごに

以上、ユニオンツールによる複数列の並び替え手順でした。

上記の例では、列の並び替えのみでしたが、上述の通り、列ヘッダの項目を絞りフィールド名が異なる場合のオプションを「フィールドの共通サブセットを出力」とすれば、列のフィルタも可能です。

また、上記のワークフローでは、目的の列ヘッダのみからなるデータをデータ入力ツールで与えていましたが、フィールド情報ツールを使用すればデータから列名を取得できるので、Alteryx内で目的の形に並べ替え・フィルタし、ユニオンツールのインプットとすることも可能です。

こちらの内容がどなたかの参考になれば幸いです。