パターンは検出できますか?BigQuery の新しい MATCH_RECOGNIZE 関数なら可能です。
Annie Leindecker
Cloud Data Consultant
Sarah Kwon
Software Engineer, BigQuery
※この投稿は米国時間 2025 年 11 月 13 日に、Google Cloud blog に投稿されたものの抄訳です。
データ内のパターンとシーケンスを特定することは、より深いインサイトを得るために非常に重要です。ユーザー行動の追跡、金融取引の分析、センサーデータのモニタリングなど、各イベントの具体的なシーケンスを認識する機能で、豊富な情報と行動につながるインサイトを引き出すことができます。
あなたは e コマース企業のマーケティング担当者として、購入履歴から最も価値の高い顧客を特定しようとしているとします。少額の注文から始めて中程度の購入に進む顧客は、最終的には高額購入者となり、最も忠実なセグメントになることをあなたは知っています。このデータを集計して結合する複雑な SQL を考え出すのは、非常に難しい作業です。
そこで、BigQuery の新機能である MATCH_RECOGNIZE をご紹介します。この新機能では、SQL クエリ内で直接、データに対して複雑なパターン マッチングを実行できます。
MATCH_RECOGNIZE とは
MATCH_RECOGNIZE は、基本的には指定されたパターンに一致する行のシーケンスを識別するために GoogleSQL に直接組み込まれたツールです。正規表現の使用に似ていますが、テキスト文字列のパターンとの一致を見るのではなく、テーブル内の行のシーケンスのパターンとの一致を検出することになります。この機能は、時系列データや、行の順序が重要なデータセットを分析する際に特に効果を発揮します。
MATCH_RECOGNIZE を使用すると、複雑なパターンを表現し、それらを分析するカスタムロジックを定義でき、これらすべてを 1 つの SQL 句内で行えます。これにより、煩雑な自己結合や複雑な手続き型ロジックの必要性が軽減されます。また、データの処理で Python に依存する度合いが低くなり、Teradata の nPath やその他の外部の MATCH_RECOGNIZE ワークロード(Snowflake、Azure、Flink など)の経験があるユーザーには使い慣れたものになります。
仕組み
MATCH_RECOGNIZE 句は高度に構造化されており、パターン マッチング ロジックを定義するために連携するいくつかの主要コンポーネントで構成されています。
-
PARTITION BY: この句は、データを独立したパーティションに分割し、各パーティション内で別個にパターン マッチングを実行できるようにします。
-
ORDER BY: 各パーティション内で、ORDER BY は行を並べ替えて、パターンが評価される順序を確立します。
-
メジャー: ここでは、出力に含める列を定義できます。多くの場合、集計関数を使用して、一致したデータを要約します。
-
PATTERN: これは MATCH_RECOGNIZE 句の中核となる部分で、一致を構成する記号のシーケンスを定義します。「*」、「+」、「?」などの数量詞を使用して、各記号の出現回数を指定できます。
-
DEFINE: この句では、パターン内の特定の記号として分類されるために行が満たす必要のある条件を定義してください。
簡単な例を見てみましょう。 上記の架空のシナリオから、販売データのテーブルがあるとします。マーケティング アナリストとして、顧客の購入パターンを特定したいと考えています。そのパターンとは、支出が最初は低く、中程度の範囲に増加し、その後高レベルに達するというものです。MATCH_RECOGNIZE を使用すると、次のようなクエリを記述できます。
この例では、データを顧客ごとにパーティション分割し、sale_date で並べ替えています。PATTERN 句は、1 つ以上の「低」売上イベント、その後に 1 つ以上の「中」売上イベント、その後に 1 つ以上の「高」売上イベントを探すように指定します。DEFINE 句では、販売額が「低」、「中」、「高」と見なされる条件を指定します。MEASURES 句は、各一致をどのように要約するかを決定します。ここでは、match_number を使用して、1 から始まる各一致にインデックスを付け、すべての一致を順番に追跡する「sales」配列を作成します。
以下は、マッチしたお客様の例です。
このデータは、いくつかの販売傾向を浮き彫りにしています。市場アナリストは、これらの傾向に基づいて、支出額の少ない顧客をより価値の高い販売に転換するための戦略を立てるためのインサイトを得ることができます。
MATCH_RECOGNIZE のユースケース
MATCH_RECOGNIZE の可能性は広大です。この強力な機能の使用例をいくつかご紹介します。
-
ファネル分析: ウェブサイトやアプリでのユーザー ジャーニーを追跡して、よくある経路と離脱ポイントを特定します。たとえば、コンバージョン プロセスの成功パターン(view_product -> add_to_cart -> purchase など)を定義し、それを完了したユーザーの数を分析できます。
-
不正行為の検出: 不正行為の可能性を示す疑わしい取引パターンを特定します。たとえば、新しいアカウントから、少額の取引が複数回行われた後に高額の取引が行われるパターンを探すことができます。
-
財務分析: 株式市場のデータを分析して、W 字回復や V 字回復などの傾向やパターンを特定します。
-
ログ分析: アプリケーション ログを精査して、エラーやセキュリティ上の脅威を示す可能性のある特定のイベント シーケンスを見つけます。
-
離脱分析: 顧客の離脱につながるデータ内のパターンを特定し、離脱を減らして顧客のセンチメントを改善するための行動につながるインサイトを見つけます。
-
ネットワーク モニタリング: 連続したログインの失敗を特定して、問題や、潜在的な脅威を追跡します。
-
サプライ チェーンのモニタリング: 一連の出荷イベントの遅延にフラグを立てます。
-
スポーツ分析: 連勝や連敗、先発メンバーの変更など、試合ごとのさまざまな選手やチームの成績の連勝や変化を特定します。
使ってみる
では、ご自身のクエリで MATCH_RECOGNIZE を使ってみましょう。この機能は、すべての BigQuery ユーザーに現在ご利用いただけます。構文と高度な機能についての詳細は、Colab、BigQuery、GitHub で利用できる公式のドキュメントとチュートリアルをご覧ください。
MATCH_RECOGNIZE は、BigQuery でのシーケンシャル分析の可能性を広げるものであり、お客様にはこの機能でご自身データからより深い分析情報を引き出していただきたいと思っています。
-クラウドデータ コンサルタント、Annie Leindecker
-BigQuery ソフトウェア エンジニア、Sarah Kwon



