WeeklyAlteryxTips#35 フィールドの値を更新しつつ型を変換する方法

Alteryx

今回はベーシックな内容になります(が、気づかない時は気づかないのでご紹介します)。

課題

フォーミュラツールで文字列と数値が混在したフィールドから数値のみにしたフィールドを同じ名前で型も数値型にしたものを作りたい。

入力データ:

解法1:フォーミュラツールとセレクトツールを使用

シンプルにフォーミュラツールとセレクトツールを使うのが一般的な方法かと思います。今回は、数値のみを残したいのでそれ以外の不要な文字列を削除する数式としています。ただ、今回は元々の値が持つ文字で数値以外に限定しているので汎用的ではないことに注意願います。ReplaceCharで消したい文字をひたすら書く、という方法もあります。

REGEX_Replace([Value], "[A-Za-z\-/]", "")

以下はセレクトツールの設定です。

もしくは、フォーミュラツールのかわりにデータクレンジングツールを使うこともできます。

データクレンジングツールは動きも遅いのと、処理も早くないのがBadポイントです(CReW MacroのCReW Cleanseをおすすめします)。

ちなみに、これらにより以下のようなデータが得られます。

解法2:複数フィールドフォーミュラを使用

解法1で行ったような処理は、複数フィールドフォーミュラ1つで解決できます。型変換かつ数式を適用したいフィールドにチェックを入れ、「出力データ型を変更」にチェックを入れ、変更後のデータ型を選択します。文字列の長さなども足りない時は、ここで変更することが可能です。数式は1つのフィールドのみに適用したい場合は直接そのフィールド名を書いても良いですし、複数フィールドに対して同じことを行いたい場合は、チェックを付けたフィールドを処理する際にそのフィールドを示す[_CurrentField_]というフィールド名を使うことも可能です。

今回は、解法1のフォーミュラツールの数式をほぼそのまま使っているので、変更したいフィールドの名称を直接入力しています。なお、元々文字列だったものを数値にしようとしているので、付与な文字列を削除した後に、ToNumber関数で数値にしています。ToNumber関数はなくても機能しますが、以下のような変換エラーが出るので、ToNumber関数を入れています。

まとめ

  • 計算と型変換を同時に行う方法を紹介しました
  • 複数フィールドフォーミュラがあれば簡単に計算を行い、そのまま型変換まで可能です

サンプルワークフローダウンロード

次回

型変換にまつわるTipsの予定です。

コメント

タイトルとURLをコピーしました