首页 > 解决方案 > 如何从python中的firebase获取事件数据?

问题描述

我有一些在Firebase Analytics部分中定义的事件,如下图所示:

火力基地事件

问题是我不知道如何通过 API 或使用 python 包从 Firebase 导出这些事件的数据。

我还找到google-cloud-bigquery了包,如果我请求数据集和表,它会返回 null。

这是代码:

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

GOOGLE_APPLICATION_CREDENTIALS = Config("GOOGLE_APPLICATION_CREDENTIALS")
client = bigquery.Client()
print(client.project)

datasets = list(client.list_datasets())
print(datasets) # it prints []

更清楚地说,我要做的是对数据库执行查询,但我没有发现任何有用的链接。

table_name = 'events_' + two_days_ago
query = """
    SELECT * 
    FROM {}
""".format(table_name)

print(client.query(query).result())

google.api_core.exceptions.BadRequest:400 表名“events_20210507”缺少数据集,而请求中未设置默认数据集。

有什么方法可以访问数据集和表。我也跟着 [this tutorial] 但仍然没有数据集和问题存在!

我怎样才能摆脱这些错误信息?任何的想法?

标签: pythonfirebaseapigoogle-bigquery

解决方案


将 Firebase 链接到 BigQuery

为了从 Firebase 执行查询(使用 BigQuery),需要链接它们。

按照以下步骤完成链接过程:

  1. 转到Firebase 控制台并选择您现有的项目。

  2. project settings从仪表板中选择。

Firebase 仪表板

  1. 选择Integration选项卡并确保 BigQuery 已启用。

BigQuery API

  1. 有关更多详细信息和配置 BigQuery API 设置,您可以单击manage,如上图所示。

解决问题

google.api_core.exceptions.BadRequest:400 表名“events_20210507”缺少数据集,而请求中未设置默认数据集。

这个错误是由于错误的查询。如前所述,有问题的查询如下:

query = """
    SELECT * 
    FROM {}
""".format(table_name)

它必须更改为以下格式:

query = """
    SELECT *
    FROM {0}.{1}.{2}
    WHERE event_name="{3}";
""".format(project_name, dataset_id, table_name, event_name)

PS 1:有关更多详细信息,您可以点击此链接

PS 2如果您遇到访问问题,您可以从iam service获取 JSON 凭据。


推荐阅读