今回はフィールドのソートについて考えたいと思います。
静的に並べ替える
フィールド名をアルファベット順で並べ替えたい場合は、単純にセレクトツールで並べ替えることができます。
セレクトツールの設定の「列、型、サイズ、名前の変更、説明」の部分をクリックすると、それぞれの項目の昇順、降順で並べ替えができます。
上の画面で「列」のところをクリックすると、降順にソートされます。
自分の好きなように並べ替えたい場合は、並び順を変更したいフィールドを選択し、↑↓ボタンで並び順を変更できます。
動的に並び替える
上の方法は、ワークフロー作成時に決まった順に並べ替えるという方法でした。しかし、データが可変の場合、動的に並び替えたい、というケースもあるかと思います。このような場合はCReW MacroのField Sortツールが便利です。
Field Sortツールの設定は非常に簡単でAscending(昇順)、Decending(降順)を選択するだけです。
なお、Field SortツールはBlob型(バイナリ型)とSpatialObj型(空間型)には対応していません。もしBlob型やSpatialObj型が含まれていた場合、以下のようにエラーが発生します。
ここからは少し余談になりますが(初心者の方は読み飛ばして頂いて良いと思います)、これはField Sortツールの内部的に、以前のWeeklyTipsでも説明したユニオンツールを使ったセレクト機能を使っているからなのですが、先にユニオンツールに接続したヘッダのデータ型がテキストになっており、これにBlob型とSpatialObj型のフィールドをユニオンすると、Designerがエラーを出すようになっているという仕様のためです。これを直すためにはヘッダ側のデータ型をそれぞれの型に直せば良いという話になります(確かにそれは可能です)。ただ、フィールドの並びが関係する場合はたいていCSVやExcel形式の場合であり、CSVやExcelではBlob型やSpatialObj型は保存されないため、Field Sortをする場合に削除してしまえば実害はないためそもそもそこまで機能として必要がない、と思います。これらの型を保存できるのはデータベースになりますが、データベースの場合はそもそもフィールドの並びは事前に指定した並びを保持していますし、Alteryxからの保存の際にフィールドの並びは関係ありません(フィールド名で解決されるため)。そのためBlob型やSpatialObj型はどこにあろうが関係ないためそもそもField Sortツールを使う必要がないためこの場合も機能として不要になります。
ここからの方が重要かもしれませんが、それでは不要なSpatialObj型やBlob型を動的に取り除く方法を考えた方が建設的かと思います。
このようなケースでは、動的セレクトツールが有効に利用できます。設定としては、ソートできないため不要なBlobとSpatialObj型のチェックをはずすだけです。
つまりワークフローとしては以下のようになります。
まとめ
- フィールドのソートについて静的な場合、動的な場合についてご紹介しました
- 基本的に静的な場合はセレクトツール、動的な場合はField Sortツール(デフォルトでは入っていないCReW Macro)を使います。
次回
次回は、ソートについてもう少し突っ込んでみたいと思います。具体的にはリストに基づいたソートです。次回はエキスパートレベルの内容になります・・・。
コメント