[BigQuery] MAX_BY関数:最大値を取得

最大値を取得するロジックを組み立てる際に、MAX_BY関数という便利な関数が用意されています。シンプルな構文で条件による最大値を取得できるためGA4の集計ではよく使われる関数となります。

MAX_BYの基本構文と仕組み

MAX_BY(取得したい列, 基準となる列)
  • 第1引数(x: 最終的に欲しい値(URL、イベント名、日付など)

  • 第2引数(y: 最大値を判定する基準(タイムスタンプ、数値、カウント数など)

Tips

基準列(y)が同値の場合の挙動
最大値となる y のレコードが複数あり、それらの x が異なる値を持つ場合、返される値は非決定的(実行によってどちらかが不定)になります。

最大セッション数を記録した日付を取得するクエリ

DECLARE top_date STRING;

CREATE TEMP FUNCTION date_from() RETURNS STRING AS ('20260701');
CREATE TEMP FUNCTION date_to()   RETURNS STRING AS ('20260831');

SET top_date = (
  SELECT
    MAX_BY(event_date, _ss) AS top_ymd
  FROM (
    SELECT
      event_date,
      COUNT(DISTINCT CONCAT(user_pseudo_id, '-', CAST((SELECT value.int_value FROM UNNEST(event_params) AS event_params WHERE KEY = 'ga_session_id') AS STRING))) AS _ss
    FROM
      `<project>.<dataset>.events_*`
    WHERE 1 = 1
      AND _TABLE_SUFFIX BETWEEN date_from() AND date_to()
      AND event_name = 'session_start'
    GROUP BY ALL
  )
);

SELECT
  top_date
[20260701 〜 20260831 の日次テーブル]

▼ フィルタ: session_start のみ走査
[日別 × ユニークセッション数の集計]

▼ MAX_BY(event_date, _ss)
[セッション数が最大だった単一の日付を特定]

▼ SET & SELECT
[top_date を出力]

関連記事

BigQueryのテーブル関数(TVF)で複雑な分析SQLを構築

[BigQuery] マルチステートメントクエリの一時テーブル

Dataformとは? GA4・BigQueryとの連携方法を解説

おすすめ記事

最近の記事
おすすめ記事
  1. [GA4] ランディングページの詳細解説

  2. [BigQuery] GA4のEコマース サンプルデータ

  3. [BigQuery] MAX_BY関数:最大値を取得

  1. 【GA4 SQL】CV(申し込みページ)に到達したセッション数を集計

  2. 【GA4SQL】ページ/セッションをGA4で確認する方法

  3. BigQueryからスプレッドシートのデータを連携

PAGE TOP