Alteryx Designer Cloud のツール紹介:RegEx ツール #Alteryx

2023.04.04

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

本記事では、Alteryx Analytics Cloudの Designer Cloud にある RegEx ツールについてご紹介します。

RegEx ツールの概要

RegEx ツールは、Parse カテゴリに属します。

入力データの指定のフィールドに対して、正規表現を適用した下記の4つの処理を行えるツールです。

Output Method 説明
Match フィールド内の文字列が、指定の正規表現にマッチするかどうか判定し、真偽値を追加出力します。
Parse フィールド内の文字列のうち、指定の正規表現にマッチする部分文字列を抽出します。
Replace フィールド内の文字列のうち、指定の正規表現にマッチする部分文字列を、指定した文字列に置換します。
Tokenize フィールド内の文字列を、指定の正規表現で分割します。

RegEx Tool | Alteryx Analytics Cloud


サンプルデータ

各機能の詳細は後述しますが、処理の例として、下記のサンプルデータを使用します。こちらは、Alteryx Designer においてサンプルデータとして用意されており、正規表現ツールのサンプルワークフローで用いられている「CustomerFileAddressesNarrow.yxdb」です。
例では「Address」フィールドを使用します。


正規表現のキャプチャ

RegEx ツールで正規表現を扱う際は、キャプチャについて知っておくと便利ですので、あわせてご紹介します。
正規表現におけるキャプチャとは、マッチした部分文字列を特定のグループに分け、後で参照できるようにすることです。
キャプチャでの参照の単位であるグループは、()を使用して定義します。Alteryx の場合、各グループの値はキャプチャの順番に応じて$1 ,$2のような番号付き変数に格納されます。
先のサンプルデータの Address フィールドに対して、下記のような正規表現を適用したとします。

(.*),(.*),(.*)\s(\d{5})(-\d{4})?

グループは、()で定義されるので、この場合、先頭の() から5つのグループに分割されることになります。各グループを文字で表現すると、下記のようになります。

  1. (.*), :コンマ , が現れるまで任意の文字列が0回以上続く文字列
  2. (.*), : コンマ , に続いて、コンマ , が現れるまで任意の文字列が0回以上続く文字列
  3. (.*)\s : 2つ目のコンマ ,に続いて、スペース \s が現れるまで任意の文字列が0回以上続く文字列
  4. (\d{5}) :5桁の数字
  5. (-\d{4})? :「先頭のハイフン -以降に4桁の数字が続く文字列」が、0回または1回現れる

サンプルデータの1レコード目は、下記の通りグループに分類されることになります。

RegEx ツールの設定

ツール設定の「Output Method」で先述の5つのオプションを指定します。どのオプションを選択したかにより、設定項目が異なります。


1.Match

このオプションでは、解析対象のフィールド内の文字列が、指定の正規表現にマッチするかどうか判定し、真偽値を追加出力します。Output Method に Match を選択した場合の設定内容と、その他の設定項目は下記の通りです。

  • Column To Parse
    • 解析対象のフィールドを選択します。
  • Regular Expression
    • 解析対象のフィールドに適用する正規表現を入力します。
  • Case Sensitive
    • 大文字小文字を区別するか指定します。区別する場合、チェックを入れます。
  • Column Name for Match Status
    • 各レコードが正規表現にマッチしたかの判定結果が出力されるので、そのフィールド名を入力します。

サンプルデータに上記の設定とした場合、出力は下記のようになります。
Column Name for Match Status で指定したBool型の「Address_Matched」フィールドが追加出力されています。

次に、正規表現を変更し末尾の「?」を除いて与えてみます。

(.*),(.*),(.*)\s(\d{5})(-\d{4})

末尾の「?」は、前のグループが0回または1回現れることを表します。下図の赤下線で示した箇所の有無がレコードによって異なります。

先の例では、末尾の「?」があることで、この部分があってもなくてもマッチしていましたが、末尾の「?」を除くと最後のグループ(-\d{4})が現れる文字列を意味するので、この部分がない、6レコード目以降は、正規表現にマッチせず false となっています。


2.Parse

このオプションでは、正規表現におけるキャプチャを使用します。解析対象のフィールドの文字列に対し、正規表現と()を使用して、キャプチャでの参照の単位であるグループを定義します。それによって、定義した各グループに該当するフィールドが追加出力されます。

下図は、先の例と同じ設定で、Output Method として「Parse」を指定した例です。

この場合、設定面で追加の項目はありません。ただし、正規表現で定義したグループ分のフィールドが追加出力されるので、各フィールドに対して、フィールド名データ型の変更が可能です。
※既定では「RegexOut」の接頭辞にグループの番号が順次付与された名称の文字列型フィールドとなります。

上記の設定をサンプルデータに適用した際の出力の一部は下図のようになります。

正規表現を変更し末尾の「?」を除いて与えると、先の例のようにマッチしないレコードはすべてNULLとして出力されます。


3.Replace

このオプションでは、解析対象のフィールドの文字列に対し、正規表現でマッチした箇所を「Replace With」に記載した内容で置き換えます。

※フィールドは追加出力されず、「Column To Parse」で指定した既存のフィールドが上書きされます。

下記の項目について、追加設定が必要です。

  • Replace With
    • 元の正規表現を置き換えるための文字列を記入します。
    • このオプションでは、キャプチャを使用することが想定されており、「Regular Expression」でグループを定義した場合、「Replace With」で参照可能となります。上図の設定の場合、5つのグループを定義しているので、Replace With 設定の「+」を押下すると下記のように$1~$5 までの定義したグループが表示されます。

※下部の「Entire find text」はすべてのグループ、「Literal $ character」は $ という文字列を新たに挿入したい場合に選択します。( $ を特殊文字ではなく、リテラル文字として入力します。)

  • Copy unmatched text to output
    • 正規表現とマッチしなかったレコードは置き換えが発生しないので、その出力方法を指定できます。チェックを入れると、既存のフィールドをそのまま(変更なく)出力し、チェックを外すとNULLとして出力します。

サンプルデータに対して、下記の設定を適用するとします。
正規表現は、先ほどから使用しているもののうち、末尾の? を除いたものです。
Replace With には Psotal Code : $4 とすることで、元の文字列の4グループ目(郵便番号を表す箇所)のみを抜き出し、前にPsotal Code : という文字列を加えています。

また、Copy unmatched text to output はチェックを外しています。

出力は下記のようになります。
※プロファイルをオンにして表示しています。

ここでは、わかりやすいようにもとのフィールドをコピーした「Address_Original」を追加していますが、ツールの処理が行われたのは一番右の「Address」フィールドです。

正規表現にマッチした6レコード目までは、指定のグループ($4)が指定の文字列(Psotal Code : )に連結する形で上書きされています。

7レコード目以降の、正規表現とマッチしなかったレコードは「Copy unmatched text to output」のチェックを外しているので、NULLとして出力されています。


4.Tokenize

解析対象のフィールドを指定の正規表現に一致する部分に分割できます。
Tokenize では、対象のフィールドを分割する際の分割方法として、「Split into Column(列に分割)」または「Split into Rows(行に分割)」を選択します。 Split into Rows を選択した場合、他の追加設定項目はありません。

下記は、分割方法として Split into Column を指定した際の設定画面です。

各設定項目の内容は下記の通りです。

  • Split into Column
    • Number of Output Columns
      • 分割するフィールド数を設定します。
    • Output Column Header
      • 新たなフィールドが1列以上、追加出力されるので、各フィールドの接頭辞を指定します。
    • If Extra Columns in Output
      • Number of Output Columns 以上に分割される場合の設定を選択します。
        • Do Not Include
          • 余分なフィールドを含まず出力します。
        • Do Not Include and Show Warning
          • 余分なフィールドを含まず、実行ログに警告もあわせて出力します。

上記の図の設定の場合、下記の出力となります。

正規表現([^,]+)は、コンマ以外の任意の文字列にマッチするので、3つのフィールドとして追加出力されています。

分割方法として Split into Rows を指定した場合、その名の通り、行に分割出力されます。サンプルデータの場合、各レコードが3つのフィールドに出力されたので、行に分割する場合、3行にわけて出力されることになります。その他のフィールド値は複製されます。

さいごに

Alteryx Analytics Cloud の Designer Cloud の Regex ツールについてご紹介しました。