Looker StudioのREGEXP_CONTAINS関数の使い方

Looker Studioのレポート作成で、特定のパターンのデータを抽出したいけれど、うまくいかない…。そんな悩みを抱えている方は多いのではないでしょうか。REGEXP_CONTAINS関数を使用すれば、複雑なデータの抽出や分類も簡単に実現できます。本記事では、REGEXP_CONTAINS関数の基本から応用まで、実践的な例を交えながら詳しく解説します。データ分析の効率を大幅に向上させる方法を、ぜひ学んでいきましょう。

1. REGEXP_CONTAINS関数とは

基本的な機能と特徴

REGEXP_CONTAINS関数は、Looker Studioで文字列パターンを検索するための強力な機能です。この関数を使用することで、複雑な条件に一致するデータを効率的に抽出できます。特定の文字列パターンが含まれているかどうかを判定し、TRUEまたはFALSEの値を返します。データ分析において、柔軟な検索条件を設定できる点が大きな特徴です。

REGEXP_CONTAINSで文字列のパターンを検索して含まれていたら、Aの処理。含まれてなければBの処理という形で実装をすることができます。少し具体的な例を出すと、文字列を判定することでスプレッドシートの値に合わせて処理を変更することができます。

Looker Studioでの位置づけ

Looker Studioにおいて、REGEXP_CONTAINS関数はデータフィルタリングの中核を担う重要な機能です。特に大量のデータを扱う場合や、複雑な検索条件が必要な場合に真価を発揮します。基本的な文字列検索だけでなく、正規表現を活用することで、より高度なデータ抽出が可能になります。

他の正規表現関数との違い

REGEXP_CONTAINS関数は、REGEXP_MATCH関数やREGEXP_EXTRACT関数などと比較して、より直感的な使用が可能です。以下の表で主な違いを比較してみましょう。

関数名主な用途戻り値
REGEXP_CONTAINSパターンの含有判定TRUE/FALSE
REGEXP_MATCH完全一致の判定TRUE/FALSE
REGEXP_EXTRACTパターンの抽出文字列

REGEXP_CONTAINS以外に類似のものがありますので、間違えないようにしてください。
REGEXP_CONTAINSと少し用途が違うため、処理したい方法に合わせて関数を使用してください。

Looker studioの公式のマニュアルはこちらです。

2. REGEXP_CONTAINS関数の基本構文

関数の書き方

REGEXP_CONTAINS関数の基本的な構文は、シンプルで理解しやすい形式となっています。
基本構文は「REGEXP_CONTAINS(検索対象フィールド, “正規表現パターン”)」です。
この2つのパラメータを正しく設定することで、目的のデータを抽出することができます。
また、大文字と小文字を区別する必要がある場合は、オプションとして第3パラメータを追加することも可能です。

REGEXP_CONTAINS(検索対象フィールド, "正規表現パターン")

パラメータの説明

REGEXP_CONTAINS関数のパラメータには、それぞれ重要な役割があります。各パラメータの詳細は以下の通りです。
検索対象内に該当データがあることが前提になります。該当データがない場合は、エラー処理なども行う必要があります。

正規表現を使って、パターンの一致を見つける関数のため、検索したいパターンを指定する必要があります。

  1. 検索対象フィールド
    • データテーブル内の列名やフィールド名を指定します
    • 文字列型のデータが格納されている必要があります
    • 数値型のデータを検索する場合は、CAST関数で文字列に変換する必要があります
  1. 正規表現パターン
    • 検索したいパターンを正規表現で指定します
    • ダブルクォーテーション(”)で囲む必要があります
    • バックスラッシュ(\)を使用する場合は、エスケープ処理が必要です

以下の表で、代表的な正規表現パターンの例を示します。

パターン説明使用例
^行の先頭^http
$行の末尾.com$
.任意の1文字h.t
*直前の文字の0回以上の繰り返しa*
+直前の文字の1回以上の繰り返しa+

正規表現は、慣れるまでに時間がかかるかと思います。しかし、慣れて意味がわかると正規表現は他のエクセルやスプレッドシートでも概念は同じになるので、別のプラットフォームでも活かすことができます!

無料でGA4のレポートもご提供しておりますのでご利用ください。
無料のGA4レポートはこちら

戻り値の理解

REGEXP_CONTAINS関数は、検索結果として論理値(TRUE/FALSE)を返します。この戻り値の特徴と活用方法について説明します。

そもそも戻り値(もどりち)は、判定した後の結果の値のことを指します。

Aパターンが含まれているかを判定する → 結果:なかった(これが戻り値) になります。
処理したあとの数値を返してくれるから戻り値と言います。

  1. TRUE(真)の場合
    • 指定したパターンが検索対象フィールド内に存在する
    • 条件分岐(CASE文など)で条件として使用可能
    • フィルタリングの基準として活用可能
  1. FALSE(偽)の場合
    • 指定したパターンが検索対象フィールド内に存在しない
    • NULL値や空文字の場合も FALSE となる
    • エラーが発生した場合はNULLが返される

以下に具体的な使用例を示します

# URLがhttpsで始まるかどうかを判定
REGEXP_CONTAINS(ページURL, "^https")

# 商品コードが数字3桁-アルファベット2字の形式かを判定
REGEXP_CONTAINS(商品コード, "^[0-9]{3}-[A-Z]{2}$")

この基本構文を理解することで、より複雑なパターンマッチングや、高度なデータ分析に活用することができます。次のセクションでは、これらの基本を応用した実践的な使用方法について説明していきます。

少し理解が難しい部分もあるかと思いますが、判定した結果が正しい・存在しているか。
もしくは、間違っている・存在してない その結果を判定する処理を行なってくれるものが、REGEXP_CONTAINS関数と理解しておいてください。

3. REGEXP_CONTAINS関数の実践的な使い方

基本的な文字列検索

REGEXP_CONTAINS関数を使用した基本的な文字列検索は、データ分析の基礎となる重要なスキルです。この機能を活用することで、特定のキーワードやパターンを含むデータを効率的に抽出することができます。

文字列検索やパターンにあったもの検索場面は多々あります。GA4でディレクトリのみを抽出したり、キャンペーンURLのあると特定のパターンが含まれてものだけを対象にしたなど、活用方法は様々です。

基本的な文字列検索では、以下のような一般的なパターンを使用します

# 特定の文字列を含むデータを検索
REGEXP_CONTAINS(ページタイトル, "キャンペーン")

# 複数のキーワードのいずれかを含むデータを検索
REGEXP_CONTAINS(商品名, "セール|キャンペーン|特価")

# 大文字小文字を区別せずに検索
REGEXP_CONTAINS(ユーザー名, "(?i)admin")

これらの基本パターンを使用することで、データの初期フィルタリングや簡単な分類が可能になります。特に大規模なデータセットを扱う際に、効率的なデータ抽出の手段として活用できます。

数値パターンの検索

数値データの検索や抽出は、ビジネス分析において重要な要素です。REGEXP_CONTAINS関数を使用することで、特定のフォーマットの数値パターンを正確に検索することができます。

変換する際には型を確認した上で行う必要があります。

代表的な数値パターンの検索例

# 3桁の数字を検索
REGEXP_CONTAINS(商品コード, "^[0-9]{3}$")

# 金額形式(3桁区切りのカンマ付き)を検索
REGEXP_CONTAINS(価格, "^[0-9,]+円$")

# 電話番号形式(XXX-XXXX-XXXX)を検索
REGEXP_CONTAINS(電話番号, "^[0-9]{3}-[0-9]{4}-[0-9]{4}$")

これらのパターンを活用することで、データの形式チェックやバリデーションも効率的に実行できます。

複雑な文字列パターンの検索

より高度なデータ分析では、複雑な文字列パターンの検索が必要となることがあります。REGEXP_CONTAINS関数は、このような複雑なパターンマッチングにも対応しています。

複雑なパターンの対応には、正規表現の記述方法には基本の記述ルールがありそれに沿った記述が必須です。

高度な検索パターンの例

# メールアドレスの形式チェック
REGEXP_CONTAINS(メールアドレス, "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$")

# URLの形式チェック(httpまたはhttpsで始まる)
REGEXP_CONTAINS(URL, "^(http|https)://[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(/.*)?$")

# 日付形式(YYYY-MM-DD)のチェック
REGEXP_CONTAINS(日付, "^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$")

実際の活用例として、以下のような表で示すことができます。

パターン用途具体例
^[A-Z]{2}\d{4}$商品コード検証AB1234
^\d{3}-\d{4}$郵便番号検証123-4567
^(0\d{1,4}-\d{1,4}-\d{4})$電話番号検証03-1234-5678

これらの複雑なパターンを使いこなすことで、データの高度な分析が可能になります。ただし、パターンが複雑になるほどパフォーマンスへの影響も考慮する必要があります。次のセクションでは、具体的な活用事例について詳しく説明していきます。

無料でGA4のレポートもご提供しておりますのでご利用ください。
無料のGA4レポートはこちら

4. データ分析での活用事例

ページカテゴリの分類方法

REGEXP_CONTAINS関数を使用したページカテゴリの分類は、Webサイトのアクセス分析において非常に重要な役割を果たします。URLやページタイトルのパターンに基づいて、自動的にコンテンツを適切なカテゴリに振り分けることができます。

この下記の例はGA4の分析ではよく実施する手法になりますので、理解しておいてください。
ディレクトリ単位の分析を行うことで、分類別でどこのページが強く、どこのページに課題があるか明確になります。

具体的な実装例を以下に示します

CASE
  WHEN REGEXP_CONTAINS(Page path, "^/products/") THEN "商品ページ"
  WHEN REGEXP_CONTAINS(Page path, "^/blog/") THEN "ブログ記事"
  WHEN REGEXP_CONTAINS(Page path, "^/news/[0-9]{4}/") THEN "ニュース"
  WHEN REGEXP_CONTAINS(Page path, "^/support/") THEN "サポート"
  ELSE "その他"
END as ページカテゴリ

このような分類により、以下のような分析が可能になります。

  • カテゴリごとのページビュー数の集計
  • コンテンツタイプ別の滞在時間分析
  • ユーザーの閲覧パターンの把握

製品グループの自動分類

製品データの分析において、REGEXP_CONTAINS関数を使用することで、製品コードやSKUに基づいた効率的な分類が可能になります。これにより、大量の製品データを迅速かつ正確に分類することができます。

下記の例のパターンはスプレッドシートを分析した時に使用します。

以下に、製品コードに基づく分類の例を示します。

CASE
  WHEN REGEXP_CONTAINS(製品コード, "^A[0-9]{3}") THEN "家電製品"
  WHEN REGEXP_CONTAINS(製品コード, "^B[0-9]{3}") THEN "キッチン用品"
  WHEN REGEXP_CONTAINS(製品コード, "^C[0-9]{3}") THEN "インテリア"
  WHEN REGEXP_CONTAINS(製品コード, "^D[0-9]{3}") THEN "アウトドア用品"
  ELSE "その他商品"
END as 製品カテゴリ

この分類方法により、以下のような分析が可能となります。

  • カテゴリ別の売上集計
  • 製品ライン別の在庫管理
  • 商品グループごとの需要予測

アクセスログの分析テクニック

REGEXP_CONTAINS関数は、アクセスログの詳細な分析にも活用できます。ユーザーエージェント情報やリファラーURLなどの複雑なデータから、有用な情報を抽出することが可能です。

アクセスログ分析の実装例

# デバイスタイプの判定
CASE
  WHEN REGEXP_CONTAINS(User Agent, "iPhone|iPad|iPod") THEN "iOS"
  WHEN REGEXP_CONTAINS(User Agent, "Android") THEN "Android"
  WHEN REGEXP_CONTAINS(User Agent, "Windows") THEN "PC"
  ELSE "その他"
END as デバイスタイプ

# 検索エンジン経由のアクセス分類
CASE
  WHEN REGEXP_CONTAINS(Referrer, "google\\.com|google\\.co\\.jp") THEN "Google"
  WHEN REGEXP_CONTAINS(Referrer, "yahoo\\.co\\.jp") THEN "Yahoo"
  WHEN REGEXP_CONTAINS(Referrer, "bing\\.com") THEN "Bing"
  ELSE "その他"
END as 参照元

この分析により、以下のようなインサイトを得ることができます。

  • デバイス別のユーザー行動分析
  • 検索エンジン別の流入パターン把握
  • アクセス経路の最適化検討

5. REGEXP_CONTAINSを使用した高度な条件分岐

CASE文との組み合わせ

REGEXP_CONTAINS関数とCASE文を組み合わせることで、より柔軟で高度なデータ分類が可能になります。この組み合わせは、複雑な条件に基づいてデータを分類することができます。CASE文は別の記事で紹介します。

CASE文との効果的な組み合わせ方の例を示します。

CASE
  WHEN REGEXP_CONTAINS(商品名, "(?i)(限定|特別).*セール") THEN "セール商品"
  WHEN REGEXP_CONTAINS(商品名, "(?i)新商品|新発売") AND 
       REGEXP_CONTAINS(発売日, "^2024") THEN "新製品"
  WHEN REGEXP_CONTAINS(商品名, "(?i)在庫処分|アウトレット") OR
       在庫数 < 10 THEN "在庫処分品"
  ELSE "通常商品"
END as 商品区分

このような複合条件を使用することで、より細かな商品分類や分析が可能となり、マーケティング施策の効果測定や在庫管理の効率化につながります。

複数条件の設定方法

複数の条件を組み合わせる際は、論理演算子(AND, OR)を使用して、より詳細な条件分岐を実現できます。これにより、データの特性をより正確に反映した分析が可能になります。

case文と論理演算子(AND, OR)を使用することで、複数のパターンの条件を指定することができます。
実務では1つの条件でなく、複数の条件にマッチしたデータを分析することがあります。分類分けグループ化してデータを見るために行います。

複数条件の実装例を以下に示します。

# 複数のパターンを組み合わせた顧客セグメント分類
CASE
  WHEN REGEXP_CONTAINS(購入履歴, "電化製品") AND
       REGEXP_CONTAINS(会員ステータス, "^VIP") AND
       総購入金額 > 100000 THEN "ハイバリュー顧客"
  WHEN REGEXP_CONTAINS(購入履歴, "(?i)(食品|日用品)") AND
       購入頻度 > 5 THEN "定期購入顧客"
  WHEN REGEXP_CONTAINS(最終購入日, "2023-12") AND
       REGEXP_CONTAINS(顧客ステータス, "通常") THEN "離脱リスク顧客"
  ELSE "一般顧客"
END as 顧客セグメント

エラー処理と注意点

REGEXP_CONTAINS関数を使用する際は、適切なエラー処理と、パフォーマンスへの影響を考慮する必要があります。
以下に主な注意点とその対処方法を説明します。

NULL値の処理

CASE
  WHEN 検索対象フィールド IS NULL THEN "データなし"
  WHEN REGEXP_CONTAINS(IFNULL(検索対象フィールド, ""), "検索パターン") 
    THEN "該当データ"
  ELSE "非該当データ"
END as 分類結果

パフォーマンス最適化

  • 複雑な正規表現パターンは処理速度に影響を与える可能性があります
  • 頻繁に使用するパターンは計算済みフィールドとして事前に準備することを推奨します
  • インデックスの活用を検討し、クエリの実行速度を向上させます

これらの点に注意を払うことで、より安定した分析環境を構築することができます。次のセクションでは、具体的なトラブルシューティングの方法について説明していきます。

特にnullの処理は必須はです。nullがあるとnullになっているデータは除外されるもしくは、処理の対象にならないため分析を行う上でデータの欠落が発生します。

Looker studioのレポート作成でお困りの方はお気軽にご相談ください。
ご相談はこちらから

無料でGA4のレポートもご提供しておりますのでご利用ください。
無料のGA4レポートはこちら

6. トラブルシューティング

一般的なエラーと解決方法

REGEXP_CONTAINS関数を使用する際に発生する一般的なエラーについて、その原因と具体的な解決方法を説明します。正しい対処法を理解することで、効率的なデータ分析が可能になります。

最も頻繁に発生するエラーとその解決方法は以下の通りです。

# エラー1: 無効な正規表現パターン
-- 誤った実装
REGEXP_CONTAINS(フィールド名, "[") // 不完全な角括弧

-- 正しい実装
REGEXP_CONTAINS(フィールド名, "\\[") // エスケープ処理を追加

# エラー2: 文字エンコーディングの不一致
-- 誤った実装
REGEXP_CONTAINS(日本語フィールド, "測定値")

-- 正しい実装
REGEXP_CONTAINS(CAST(日本語フィールド AS STRING), "測定値")

エラーの予防には、以下の対策が効果的です。

  • 正規表現パターンのテストを事前に実施する
  • データ型の一貫性を確保する
  • 特殊文字の適切なエスケープ処理を行う

7. ベストプラクティスとTips

効率的なパターン設計

REGEXP_CONTAINS関数を最大限に活用するためには、効率的で保守性の高いパターン設計が不可欠です。適切なパターン設計により、データ分析の精度向上とメンテナンス性の確保が可能になります。

効率的なパターン設計の基本原則は以下の通りです:

# シンプルで明確なパターン設計
CASE
  WHEN REGEXP_CONTAINS(商品コード, "^[A-Z]{2}[0-9]{4}$") THEN
    -- 標準的な商品コード形式(例:AB1234)
    "標準商品"
  WHEN REGEXP_CONTAINS(商品コード, "^[A-Z]{2}[0-9]{4}-[A-Z]$") THEN
    -- バリエーション商品コード形式(例:AB1234-S)
    "バリエーション商品"
  ELSE
    "その他"
END as 商品分類

このようなパターン設計により、コードの可読性が向上し、将来的な修正や拡張が容易になります。また、パフォーマンスの最適化にも貢献します。

メンテナンス性の向上

計算フィールドに独自の計算式を設定した場合、メンテナンス性の高いコードを記述してください。
命名規則などのルールや記述の順番などを決めておくと、メンテナンス性の高いコードになり、変更が容易になります。

長期的な運用を見据えた場合、メンテナンス性の高いコード設計が重要になります。REGEXP_CONTAINS関数を使用する際も、将来の保守や改修を考慮した実装を心がける必要があります。

メンテナンス性を向上させるための実装例

# 共通パターンの定義と再利用
WITH パターン定義 AS (
  SELECT
    "^[A-Z]{2}" as プレフィックス,
    "[0-9]{4}" as 数値部分,
    "-[A-Z]$" as サフィックス
),
商品分類 AS (
  SELECT
    商品コード,
    CASE
      WHEN REGEXP_CONTAINS(商品コード, 
           CONCAT(プレフィックス, 数値部分)) THEN "標準商品"
      WHEN REGEXP_CONTAINS(商品コード,
           CONCAT(プレフィックス, 数値部分, サフィックス)) THEN "バリエーション商品"
      ELSE "その他"
    END as 分類
  FROM 商品マスタ
  CROSS JOIN パターン定義
)
SELECT * FROM 商品分類

実務での活用ポイント

実務においてREGEXP_CONTAINS関数を効果的に活用するためには、ビジネスニーズに合わせた適切な実装が重要です。以下に、実務での主要な活用ポイントを説明します。

データ品質管理への応用

# 入力データの品質チェック
SELECT
  フィールド名,
  COUNT(*) as レコード数,
  SUM(CASE WHEN REGEXP_CONTAINS(フィールド値, 期待パターン) THEN 1 ELSE 0 END) as 有効レコード数,
  SUM(CASE WHEN NOT REGEXP_CONTAINS(フィールド値, 期待パターン) THEN 1 ELSE 0 END) as 無効レコード数
FROM データテーブル
GROUP BY フィールド名

このような実装により、以下のような業務改善が期待できます。

  • データ入力エラーの早期発見と修正
  • レポート品質の向上
  • 分析精度の改善
  • 業務効率の向上

REGEXP_CONTAINS関数の効果的な活用は、データ分析業務の質を大きく向上させます。本記事で解説した実装方法やベストプラクティスを参考に、自身の業務に最適な活用方法を見つけていただければ幸いです。

REGEXP_CONTAINSのよくある質問(FAQ)

REGEXP_CONTAINS関数の使用に関して、よく寄せられる質問とその回答をまとめました。実務での活用に役立つ情報を提供いたします。

REGEXP_CONTAINS関数の基本的な使い方を教えてください

REGEXP_CONTAINS関数は、指定したフィールド内で特定のパターンを検索する関数です。基本的な使用方法は以下の通りです:

REGEXP_CONTAINS(検索対象フィールド, "検索パターン")

この関数は、パターンが見つかった場合にTRUE、見つからなかった場合にFALSEを返します。例えば、商品名に「セール」という文字列が含まれているかどうかを確認する場合は、以下のように記述します:

REGEXP_CONTAINS(商品名, "セール")

大文字小文字を区別せずに検索するにはどうすればよいですか?

大文字小文字を区別せずに検索する場合は、(?i)フラグを使用します。具体的な実装方法は以下の通りです:

REGEXP_CONTAINS(検索対象フィールド, "(?i)検索パターン")

この方法により、「SALE」「Sale」「sale」などの表記の違いを区別せずに検索することが可能です。

複数のパターンを同時に検索することはできますか?

複数のパターンを同時に検索する場合は、パイプ記号(|)を使用して実装できます。以下に具体例を示します:

REGEXP_CONTAINS(商品カテゴリ, "電化製品|家具|インテリア")

この方法により、いずれかのパターンに一致するデータを抽出することができます。

Looker studioのレポート作成でお困りの方はお気軽にご相談ください。
ご相談はこちらから