Alteryx Designer Cloud のツール紹介:RegEx ツール #Alteryx
本記事では、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つのグループに分割されることになります。各グループを文字で表現すると、下記のようになります。
(.*),
:コンマ,
が現れるまで任意の文字列が0回以上続く文字列(.*),
: コンマ,
に続いて、コンマ,
が現れるまで任意の文字列が0回以上続く文字列(.*)\s
: 2つ目のコンマ,
に続いて、スペース\s
が現れるまで任意の文字列が0回以上続く文字列(\d{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
- 余分なフィールドを含まず、実行ログに警告もあわせて出力します。
- Do Not Include
- Number of Output Columns 以上に分割される場合の設定を選択します。
- Number of Output Columns
上記の図の設定の場合、下記の出力となります。
正規表現([^,]+
)は、コンマ以外の任意の文字列にマッチするので、3つのフィールドとして追加出力されています。
分割方法として Split into Rows を指定した場合、その名の通り、行に分割出力されます。サンプルデータの場合、各レコードが3つのフィールドに出力されたので、行に分割する場合、3行にわけて出力されることになります。その他のフィールド値は複製されます。
さいごに
Alteryx Analytics Cloud の Designer Cloud の Regex ツールについてご紹介しました。