【レポート】トレーニングセッション:Designerでの正規表現の記述 #alteryx23

2023.05.29

こんにちは!アライアンス統括部のikumiです。現地時間2023年05月22日(月)〜2023年05月25日(木)に米国ラスベガスで開催されたAlteryxの年次カンファレンスイベント「Inspire 2023」。今回クラスメソッドからは計6人のメンバーが現地参戦してきました。

本記事では、5/23に行われた「トレーニングセッション:Designerでの正規表現の記述」のセッションについて、その内容をお届けいたします。

セッション概要

  • セッションタイトル
    • Writing Regular Expressions in Designer
  • スピーカー(敬称略)
    • Albert Bellamy, Customer Training Instructor, Alteryx
  • 概要
    • このセッションではAlteryxで正規表現を作成する方法と、Alteryxでの協力で柔軟な「解析機能」を活用する様々な方法を説明します。

セッション内容

まずはRegExの読み方について


正規表現はRegExとも表記されますが、RegExとは、どう発音するべきか分かりますか?カタカナで書き起こすと、「レゲックス」「レジエックス」という読みが一般的だそうです。このセッションのスピーカーは「レジエックス」と発音しているようでした。

Agenda

  • 本日学ぶ内容
    • 正規表現ツールの「置換」「トークン化」「解析」「一致」の基本について学習します。
  • Agenda
    • 正規表現のツールの使い方を学んだあと、ハンズオン形式でトレーニングを行いました。
  • トレーニングで使用するツール

RegExとは何か

  • 正規表現とは、入力したテキスト自体ではなく、テキストの種類で解析するもの
  • テキストの種類で単語を抽出できるため、名前や特定のパターンを抽出する際に便利
  • Alteryx Designer内では、正規表現ツールだけでなくフォーミュラなど複数のツールで正規表現を使用可能

  • 正規表現ツールの設定内容

    • 解析する列:解析するデータを含むフィールドを選択
    • 変換する形式:正規表現を作成する
    • 出力:任意の出力方法を選択
  • 正規表現ツールの出力方法:解析
    • 正規表現で定義されたそれぞれのグループに一致する文字を返します
    • カッコでグループ分けされた文字は、それぞれの列に出力されます
  • 正規表現ツールの出力方法:一致
    • 定義した正規表現と一致する文字列があった場合「true」、そうでない場合「false」のブール値を返します
  • 正規表現ツールの出力方法:置換
    • 正規表現で定義したそれぞれのグループを再配置したり、アレンジできます
    • 置換テキストの変数として「$」マークを使用すると、正規表現で定義したそれぞれのグループと関連付けされます。
  • 正規表現ツールの出力方法:トークン化
    • 正規表現で定義した文字列に一致する個別の文字を、列や行に分割します

ここまでが前半で、一通り正規表現とは何か、正規表現ツールの出力イメージについて学習しました。

ハンズオン

ユースケース

一行に連結された、本のタイトル・著者などの書籍情報を分解し、理想的なフォーマットに修正していくというケースを想定してハンズオンを進めていきました。

  • 元データ

  • 目指すデータ

  • 今回作成したワークフロー

    • ハンズオンではこのようなワークフローを作成しましたので、ポイントを絞って紹介していきます。

Step 1

まずは、その本がオンラインで出版されているかどうかを判定する処理を行います。

  • 解析する列:articles
  • 正規表現:.+Published online.+
  • 出力方法:一致
  • 一致ステータスの列名:WasPublishedOnline_ma
    ここではarticles列のデータに、「Published online」の文字が含まれるかどうかを、WasPublishedOnline_maの新しい列にブール値として出力します。

  • 出力結果

Step 2

続いて、レコードIDを抽出する処理を行います。まずはレコードIDを指定の形に置換します。

  • 解析する列:articles
  • 正規表現:^;(\d+):
  • 出力方法:置換
  • 置換テキスト:$1=
    「;1:」のパターンで始まるレコードIDを、「1=」のパターンで始まるように置換しました。

  • 出力結果


そして、置換した内容を元にレコードIDだけ抜き出します。

  • 解析する列:articles
  • 正規表現:^(\d+)=.+
  • 出力方法:解析
  • 出力列の名前:RecordID
    「1=」のパターンで始まる数字をRecordIDの列に出力します。

  • 出力結果

Step 3 ~ 5 についても、一致するパターンを判定して解析し、「本のタイトル」「著者名」「管理番号」を新しい列に出力します。指定のパターンに一致した文字を新しい列に抜き出すことができる解析機能は、非常に柔軟な使い方ができると感じました。

Step 6

最後に一列に連結されている著者の情報を、行に分割していきます。

  • 解析する列:Auther
  • 正規表現:[^,]+
  • 出力方法:トークン化、行に分割

  • 出力結果


この処理でハンズオンのパートは終了となります。正規表現ツールの使い方の基本的な部分を学ぶことができました。

最後に

皆さんは正規表現を使用したことはあるでしょうか?Alteryxに限らず、正規表現はいたるところで使用するので、正規表現の記述方法については抑えておきたいですね。今回トレーニングで学習した正規表現ツールは、データの加工や整形を行う上で非常に便利なツールとなりますので、使いこなせるようしていきたいですね。