簡體   English   中英

在 GA4 數據的 BigQuery 中按 Session ID 分組

[英]Grouping by Session ID in BigQuery for GA4 data

我目前正在嘗試構建一個查詢,允許我按 session ID 對我的所有 GA4 事件數據進行分組,以便根據 session 獲取有關所有事件的信息,而不是分別分析每個事件的數據。

我的初始查詢的結果 output 是一個新表,它有 session ID 作為表中它自己的列,而不是在特定事件的事件參數數組中。

問題是 session_id 列具有非唯一值,session id 為每一行重復多次,這是一個新事件(在該會話中發生)。 我正在嘗試合並(合並)那些非唯一的 session id,以便我可以獲得與特定 session_id 關聯的所有事件。

我已經嘗試過這個查詢,它為我提供了 session_id 作為一個新列,每個事件都會重復一次。

`SELECT
  *,
  (
    SELECT COALESCE(value.int_value, value.float_value, value.double_value)
    FROM UNNEST(event_params)
    WHERE key = 'ga_session_id'
  ) AS session_id,
    (
    SELECT COALESCE(value.string_value)
    FROM UNNEST(event_params)
    WHERE key = 'page_location'
  ) AS page_location
FROM
  `digital-marketing-xxxxxx.analytics_xxxxxxx.events_intraday*``

給我一個 output 之類的(它有比這更多的列,但只是一個例子):

session_id 事件名稱
1234567 session_start
1234567 點擊網址

我需要一種方法來基本上將兩個 session id 合並到一個單元格中。 當我嘗試這個時:

SELECT
  *,
  (
    SELECT COALESCE(value.int_value, value.float_value, value.double_value)
    FROM UNNEST(event_params)
    WHERE key = 'ga_session_id'
  ) AS session_id,
    (
    SELECT COALESCE(value.string_value)
    FROM UNNEST(event_params)
    WHERE key = 'page_location'
  ) AS page_location
FROM
  `digital-marketing-xxxxxxx.analytics_xxxxxxx.events_intraday*`
GROUP BY session_id

我收到一個錯誤,告訴我(如果我理解正確的話)我無法聚合某些值(如日期),這是代碼在嘗試按 session id 分組時試圖做的事情。

有沒有辦法解決? 我是 SQL 的新手,但我所做的搜索到目前為止還沒有給我一個關於如何嘗試這個的明確答案。

我使用這段代碼來理解事件的順序,它可能沒有那么有效,因為我已經設置它來查看其他事情

with _latest as (
  SELECT 
    --create unique id
            concat(user_pseudo_id,(select value.int_value from unnest(event_params) where key = 'ga_session_id')) as unique_session_id,
    
    --create event id
        concat(user_pseudo_id,(select value.int_value from unnest(event_params) where key = 'ga_session_id'),event_name) as session_ids,
          event_name,
          event_date,
           
          TIMESTAMP_MICROS(event_timestamp) AS event_timestamp
        FROM  *******
       
        where
            -- change the date range by using static and/or dynamic dates
           _table_suffix between  '20221113' and '20221114'),
     Exit_count as (
        select *,
     row_number() over (partition by session_ids order by event_timestamp desc) as Event_order
        from _latest)
    
        select 
    Event_order,
    unique_session_id,
        event_date,
        event_name,
        
   FROM
        Exit_count
    
  group by
        Event_order,
        event_name,
        unique_session_id,
        --pagepath,
        event_date
        --Country_site
        order by
            unique_session_id, 
            Event_order 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM