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

如何使用Python从Firebase获取事件统计数据(含国家过滤)及相关资料

嘿,我来帮你搞定这个Firebase事件统计的需求!下面给你两种实用方案,还有Python代码示例,以及了解更多细节的方向~

实现Firebase事件统计的具体方案

一、通过BigQuery分析Firebase Analytics数据(首推)

如果你的Firebase项目已经开启了BigQuery集成(这个功能在免费配额内就能用),直接用SQL查询是最灵活高效的方式——毕竟Firebase Analytics的原始事件数据都会自动同步到BigQuery中。

1. 统计最近1天、30天的事件总数

先找到你的BigQuery数据集(格式是firebase_project_id.analytics_XXXXXX,其中XXXXXX是你的数据流ID,在Firebase控制台的BigQuery集成页面能看到),执行下面的SQL查询:

-- 统计最近1天的事件总数
SELECT COUNT(*) AS total_events_last_1day
FROM `firebase_project_id.analytics_XXXXXX.events_*`
WHERE _TABLE_SUFFIX >= FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))

-- 统计最近30天的事件总数
SELECT COUNT(*) AS total_events_last_30day
FROM `firebase_project_id.analytics_XXXXXX.events_*`
WHERE _TABLE_SUFFIX >= FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY))

2. 按国家筛选的统计

只需要在SQL里加上geo.country维度做分组即可:

-- 最近1天各国家的事件数
SELECT geo.country AS country, COUNT(*) AS event_count
FROM `firebase_project_id.analytics_XXXXXX.events_*`
WHERE _TABLE_SUFFIX >= FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
GROUP BY geo.country
ORDER BY event_count DESC

-- 最近30天各国家的事件数
SELECT geo.country AS country, COUNT(*) AS event_count
FROM `firebase_project_id.analytics_XXXXXX.events_*`
WHERE _TABLE_SUFFIX >= FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY))
GROUP BY geo.country
ORDER BY event_count DESC

如果要在Python中自动执行这些查询,用google-cloud-bigquery库就行,示例代码如下(记得替换成你自己的项目信息):

from google.cloud import bigquery
from datetime import datetime, timedelta

# 初始化BigQuery客户端
client = bigquery.Client(project="your-firebase-project-id")

def get_total_event_count(time_interval_days):
    end_date = datetime.now().date()
    start_date = end_date - timedelta(days=time_interval_days)
    table_suffix_start = start_date.strftime("%Y%m%d")
    
    query = f"""
        SELECT COUNT(*) AS total_events
        FROM `your-firebase-project-id.analytics_XXXXXX.events_*`
        WHERE _TABLE_SUFFIX >= '{table_suffix_start}'
    """
    query_job = client.query(query)
    results = query_job.result()
    for row in results:
        return row.total_events

# 获取最近1天和30天的事件总数
last_1day_count = get_total_event_count(1)
last_30day_count = get_total_event_count(30)
print(f"最近1天事件数: {last_1day_count}")
print(f"最近30天事件数: {last_30day_count}")

# 按国家统计最近1天的事件数
def get_country_event_stats(time_interval_days):
    end_date = datetime.now().date()
    start_date = end_date - timedelta(days=time_interval_days)
    table_suffix_start = start_date.strftime("%Y%m%d")
    
    query = f"""
        SELECT geo.country AS country, COUNT(*) AS event_count
        FROM `your-firebase-project-id.analytics_XXXXXX.events_*`
        WHERE _TABLE_SUFFIX >= '{table_suffix_start}'
        GROUP BY geo.country
        ORDER BY event_count DESC
    """
    query_job = client.query(query)
    return [(row.country, row.event_count) for row in query_job.result()]

country_stats_1day = get_country_event_stats(1)
print("\n最近1天各国家事件数:")
for country, count in country_stats_1day:
    print(f"{country}: {count}")

二、使用Firebase Admin SDK的Analytics API

如果还没开启BigQuery集成,也可以用Firebase Admin SDK的Analytics API来获取预聚合的数据,但要注意这个API有请求配额限制,适合小范围查询。

首先安装依赖:

pip install firebase-admin

然后用Python代码实现(记得替换成你的服务账号密钥路径和APP ID):

import firebase_admin
from firebase_admin import analytics
from datetime import datetime, timedelta

# 初始化Firebase Admin SDK
cred = firebase_admin.credentials.Certificate("path/to/your-service-account-key.json")
firebase_admin.initialize_app(cred)

# 获取最近1天的事件总数
end_time = datetime.now()
start_time = end_time - timedelta(days=1)
response = analytics.get_app_analytics(
    app_id="your-firebase-app-id",
    metrics=["event_count"],
    start_time=start_time,
    end_time=end_time
)
print(f"最近1天事件数: {response.metrics[0].value}")

# 获取最近30天的事件总数
start_time_30d = end_time - timedelta(days=30)
response_30d = analytics.get_app_analytics(
    app_id="your-firebase-app-id",
    metrics=["event_count"],
    start_time=start_time_30d,
    end_time=end_time
)
print(f"最近30天事件数: {response_30d.metrics[0].value}")

# 按国家统计最近1天的事件数
response_country = analytics.get_app_analytics(
    app_id="your-firebase-app-id",
    metrics=["event_count"],
    dimensions=["country"],
    start_time=start_time,
    end_time=end_time
)
print("\n最近1天各国家事件数:")
for row in response_country.rows:
    print(f"{row.dimension_values[0].value}: {row.metric_values[0].value}")

三、了解更多Firebase上报数据的方法

你可以在Firebase官方文档里找到更详细的内容:

  • 查看Firebase Analytics的所有事件维度、指标:在Firebase控制台的Analytics板块,或者官方文档的Analytics数据模型章节
  • BigQuery集成的完整配置指南:在Firebase控制台的「项目设置」→「集成」里找到BigQuery,查看配置步骤和数据结构说明
  • Firebase Admin SDK的Analytics API完整参考:官方文档中「Firebase Admin SDK」下的Analytics部分,有所有方法的参数说明和示例

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:15:26