python - 如何从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] 但仍然没有数据集和问题存在!
我怎样才能摆脱这些错误信息?任何的想法?
解决方案
将 Firebase 链接到 BigQuery
为了从 Firebase 执行查询(使用 BigQuery),需要链接它们。
按照以下步骤完成链接过程:
转到Firebase 控制台并选择您现有的项目。
project settings
从仪表板中选择。
- 选择
Integration
选项卡并确保 BigQuery 已启用。
- 有关更多详细信息和配置 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 凭据。
推荐阅读
- php - 从wordpress中的另一个文件中获取变量
- python - Selenium 在打开后立即关闭浏览器
- javascript - 如何在javascript中创建一个新的索引数组?
- microcontroller - Pi PICO- 从 XIP QSPI 闪存启动
- javascript - 如何在 keyup 上调用函数 - Javascript
- java - 如何从java程序打开IE
- linux - 使用 crontab 重命名和移动文件
- qt - 设置了 `WA_DeleteOnClose` 属性的堆栈 QDialog 上的`double free or corruption (out)` 错误
- python - API文档中的Furo Sphinx主题大写太多
- visual-studio-code - 如何在 vscode 中设置 CMAKE_CXX_COMPILER 变量