You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于已有DataFrame在Pandas中实现指定BigQuery查询逻辑?

在Pandas中实现GA4 BigQuery查询逻辑

以下是对应你提供的BigQuery查询逻辑的Pandas分步实现,每一步都匹配原SQL的核心操作:

1. 生成去重标识 dedup_id

对应BigQuery中row_number() over(partition by user_pseudo_id, event_timestamp, event_name),为每组用户、事件时间、事件名称生成从1开始的序号:

df['dedup_id'] = df.groupby(['user_pseudo_id', 'event_timestamp', 'event_name']).cumcount() + 1

2. 展开 event_params 数组

对应BigQuery的unnest(event_params),先展开嵌套的参数列表,再解析参数中的key和value子字段(假设event_params是包含字典的列表结构):

# 展开event_params列表
df_exploded = df.explode('event_params').reset_index(drop=True)

# 解析参数的key值
df_exploded['event_param_key'] = df_exploded['event_params'].apply(lambda x: x.get('key'))

# 解析value下的各类型字段
df_exploded['string_value'] = df_exploded['event_params'].apply(lambda x: x.get('value', {}).get('string_value'))
df_exploded['int_value'] = df_exploded['event_params'].apply(lambda x: x.get('value', {}).get('int_value'))
df_exploded['float_value'] = df_exploded['event_params'].apply(lambda x: x.get('value', {}).get('float_value'))
df_exploded['double_value'] = df_exploded['event_params'].apply(lambda x: x.get('value', {}).get('double_value'))

3. 提取 ga_session_id

对应BigQuery的case when逻辑,仅当参数key为ga_session_id时提取其整数型值:

df_exploded['ga_session_id'] = df_exploded.apply(
    lambda row: row['int_value'] if row['event_param_key'] == 'ga_session_id' else None,
    axis=1
)

4. 按事件维度填充统一的 ga_session_id

对应BigQuery的max(ga_session_id) over (partition by event_timestamp,event_name),为同一事件时间和名称的分组填充统一的session ID:

df_exploded['ga_session_id'] = df_exploded.groupby(['event_timestamp', 'event_name'])['ga_session_id'].transform('max')

5. 生成关联键 join_key

拼接用户伪ID、事件时间、事件名称和去重ID,生成唯一关联键:

# 统一转为字符串后拼接
df_exploded['join_key'] = (
    df_exploded['user_pseudo_id'].astype(str) +
    df_exploded['event_timestamp'].astype(str) +
    df_exploded['event_name'] +
    df_exploded['dedup_id'].astype(str)
)

6. 整理最终结果

移除原始的event_params数组字段,保留所有处理后的字段:

final_df = df_exploded.drop(columns=['event_params'])

内容的提问来源于stack exchange,提问作者kirti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 19:27:36