【Alteryx】列名の昇順・降順で列順を並び替える Field Sort(CReW Macro)

【Alteryx】列名の昇順・降順で列順を並び替える Field Sort(CReW Macro) | Tableau-id Press -タブロイド-
Alteryx

Alteryxで列の名前順(昇順・降順)に列を並び替えるにはどうしたらいいでしょうか?

カラム数が少ない場合は、Selectツールでちまちま並び替えてもいいのですが、多い場合いちいちそんなことはやっていられません。
そんな時に使えるのが、CReW MacroのField Sortです。
CReW Macroと言えば、Runner Macroが有名ですが、それだけではなくいろいろ便利なマクロが用意されています。
以前、100カラムくらいあるデータ2つの列の並び順を合わせたい!ということがあったのですが、その時にこのField Sortツールにお世話になりました。

では早速使ってみましょう~!

Field Sort(CReW Macro)で列名順に列を並び替える

今回使うのは、次のようなデータです。アルファベットの列名が順不同で並んでいます。

このデータを、Field Sortで列の昇順に並び替えてみます。

ワークフローを実行した結果は次の通りです。

A、B、C・・・と列名の昇順に並びかわりましたね、Field Sortすごい!

わあ便利!どういう仕組みになってるんだろう・・・と思って、Field Sortマクロの中身を見てみたら、特殊なことはしておらず普段よく使うツールだけで実現してありました。
折角なので、1ステップずつどうやって実現しているか見ていきたいと思います。

Field Sortのフロー解説

フローの全体像は次のようになっています。

処理を一つずつ見ていきます。処理の過程が分かりやすくなるよう、Inputデータは先ほどのデータに置き換えたものを使います。

①Field Info Toolでカラムの情報を取得する。ここで列の名前などの情報が取得できます。

②Sort ToolでName(列名)の昇順で並び替える。

昇順・降順はField Sortツールで選択した値をパラメータとして受け取り、変更できるようにしています。
Drop Downで選択したAscending/Descendingを

Actionを使いSort ToolのOrder(昇順か降順か)を上書きする。

③Record IDで連番(RecordID)をふる。

④Cross Tabで行を列にする。ヘッダをRecordIDに、値にName(列名)を設定します。


⑤Dynamic Renameで先頭行をヘッダに設定する。


この時点で、すでに列名が昇順に並んでいるのがわかりますね!

⑥Unionツールで、並び替えた列と元データとユニオンする。
列の名前でユニオンするようにします。並び替えたヘッダ側を先に(#1となるよう)ユニオンしないと、並び替えた方の列が適用されないようでした。


元データが列の昇順で並び変わりました!

⑦後処理
最後のDynamic Selectでは、内部処理用の列を除外しているようです。
この処理はあってもなくても動作が変わらなかったです。ここだけ謎が少し残りました。


最後一つ疑問はありましたが、難しい処理をすることなく、列名での自動ソートを実現してありました。
これはアイディアが素晴らしいなと思いました。自分もこういうものをサクッと作れるようになりたいな・・・と思います。
CReW MacroのField Sort、便利なので機会がありましたら使ってみて下さい!