AlteryxのDynamic Renameツールの話
こんにちは、小澤です。
AlteryxのDynamic系ツールの話もこれで最後の1つです。 今回はDynamic Renameツールとなります。
Dynamic Renameツールとは
Dynamic Renameツールも、他のツールの出力を入力して受け取って設定値を変更する系のツールです。 このツールで変更するものは、データのヘッダ(フィールド名前)です。
Dynamic Renameツールを使ってみる
さて、早速Dynamic Renameツールを使ってみましょう。と、言いたいところですが、実はサンプルワークフローにこのツールにはほぼ全機能を紹介したものがあります。
Help > Sample Workflows > Learn one tool at a time > Developer > Dynamic Rename
を見ていただくと、具体的に何らかの処理をしているわけではなく、本当に使い方のみを示したサンプルを確認することができます。
今回は、このサンプルの出力で順に見ていくことにします。
1行目のデータをヘッダにする
まず最初は、1行目のデータがヘッダになってしまっている場合です。
ツールの設定は以下のようになっています。
Rename ModeでTake Field Names from First Row of Dataとして、対象となるフィールドをその下で選択しています。 この結果は、以下のようになっています。
なお、選択しなかったフィールドは処理実行前のフィールド名がそのまま利用されますが、1行目のデータに関しては削除されるので注意してください。
Fomulaを使ってリネームする
続いては、Fomulaの式でリネームの設定をするものです。 サンプルでは、先ほどの先頭行をヘッダとして抜き出した結果を入力として使っています。
ツールの設定は以下のようになっています。
Rename ModeをFomulaに設定し、Expressionでフィールド名に"Zip"が含まれるものには末尾に"_Code"をつけるという処理を行っています。 これによって元のデータの"Zip", "Zip4"がそれぞれ"Zip_Code", "Zip4_Code"に変更されています。
プレフィックス/サフィックスの追加
続いては、フィールド名にプレフィックスやサフィックスをつけるものになります。
ツールの設定は以下のようになっています。
Rename Modeは、Add Prefix/Suffixとなります。 このモードでは、対象となるフィールド全てに問答無用で付与されるので、チェックボックス部分で対象を絞っています。
Propertiesで付与する文字列と、プレフィックスなのかサフィックスなのかを選択します。 今回は、プレフィックスの付与となっているため、Visits, SpendがそれぞれTotal_Visits, Total_Spendにリネームされています。
プレフィックス/サフィックスの削除
こちらは、追加の逆でフィールド名からプレフィックス/サフィックスの削除を行うものになります。
この設定で、FirstName, LastNameからNameサフィックスを削除しているので、それぞれFirst, Lastと変更されています。
他のデータのメタデータから取得
ここまでは、Dynamic Renameツールの2つある入力うち、片方のみしか利用しないものになっていました。 残り利用方法はすべて、2つの入力両方を利用するものになっています。
まずは、他のデータのメタデータを利用してフィールド名を決めるやり方を見てみたいと思います。 と、その前にメタデータとは何なのか確認しておきましょう。
Alteryxでいうメタデータとは、各ツールが出力するデータに含まれるフィールド名や型などの情報になります。 これは実行済みのワークフロー上でツールではなくコネクタを選択したり、Field Infoツールを利用することで確認することができます。
このツールを接続して出力結果をみると、以下のようにメタデータが出力されていることがわかります。
このようにAlteryx内部では、メタデータとしてこれらの値を保持しています。 この値はField Infoとし出力するだけでなく、他のツールと接続した際に利用することが可能です。 Dynamic RenameツールではName列の値に相当する部分を抜き出して利用して新たにフィールド名として設定することが可能です。
Dynamic Renameツールでそれをやるための設定は以下のようになります。
Rename Modeで「Take Field Names From Right Input Metadata」としています。 ワークフローの設定がHorizontalの場合、左右ではなく上下にコネクタを接続する形式となりますので位置ではなくコネクタに書いてある「L」「R」で判断してください。 こうすることで、R側で入力されたデータのメタデータを参照してL側のフィールド名を設定します。
入出力を確認すると
- L側の入力
- R側の入力
- 出力
となっており、R側の入力のヘッダがそのままL側に設定されたものが出力されているのが確認できます。
フィールド名が入った別データを用意
続いては、フィールド名そのものを値として受け取る方法です。 こちらはR側の入力として以下のように、フィールド名を入れたデータを渡してやります。
Dynamic Renameツールの設定は以下のようになります。
Rename Modeで「Take Field Names from Right Input Rows」を選択し、New Field Name from Columnでフィールド名に利用する列を選択します。 Old Field Name from Columnは「-Use position rename-」にしておくことで前から順に当てはめていく設定になっています。
新フィールド名と現フィールド名の対応関係が入ったデータを用意
最後に同様にフィールド名をR側で受け取る方法で、並び順があっていない場合に名前変更後のどの列が変更前のどの列に対応しているかも含めて定義する方法になります。
これもやり方はほとんど変わりません。 まず、フィールド名一覧に新旧両方のデータをもたせます。
次にDynamic RenameツールでNew Field Name from Columnとともに、Old Field Name from Columnも指定します。
これでフィールド名の並びがあっていない時にも対応可能になります。
終わりに
今回はDynamic Renameツールについて解説しました。 ツールの解説だけでは、どういった場面で利用できそうか想像しづらいツールかもしれません。 利用シーンとしては、すでにデータベース上に保存してあるデータに対して、新たにデータを整形した後に追加するような場面でデータベースから取得したフィールドに関する情報をそのまま利用するなどといったものになるかと思います。