Google 致力于为黑人社区推动种族平等。查看具体举措

将集合流式传输至 BigQuery

Firebase
Made by Firebase

将指定 Cloud Firestore 集合中的实时增量更新发送至 BigQuery。

此扩展程序的运作方式

使用此扩展程序将一个 Cloud Firestore 集合中的文档导出到 BigQuery。导出操作采用实时、增量的形式,因此 BigQuery 中的数据是 Cloud Firestore 中内容的镜像。

该扩展程序会创建并更新包含以下两种 BigQuery 资源的一个 数据集

  • 一个原始数据 ,其中存储着集合内文档的完整更改历史记录。此表中包含若干元数据字段,以便 BigQuery 可以显示数据的当前状态。主要元数据字段包括用于文档更改的“timestamp”、“document_name”和“operation”。
  • 一个 视图 ,代表集合内数据的当前现状。它还会显示各文档最新“操作”(“CREATE”、“UPDATE”或“IMPORT”)的日志。

如果您在指定的集合中创建、更新、删除或导入文档,则此扩展程序会将相应更新发送到 BigQuery。然后,您可以对此镜像数据集运行查询。

请注意,此扩展程序仅监听此集合中的文档更改,不会监听任何子集合中的更改。但是,您可以安装更多此扩展程序的实例,专用于监听数据库中的子集合或其他集合。如果您在给定集合内的多个文档之间有相同的子集合,则可以使用 {wildcard} 表示法监听所有这些子集合(例如: chats/{chatid}/posts )。

如果启用通配符引用,则系统将提供一个额外的基于 STRING 的列。生成的 JSON 字段值引用 ${param:COLLECTION_PATH} 中包含的任何通配符。您可以使用 JSON_EXTRACT_SCALAR 提取它们。

您无法对预先存在的表更新 Partition 设置;如果需要这些选项,则必须创建一个新表。

在添加聚类选项时, Clustering 不需要创建或修改表,这将自动更新。

额外设置

在安装此扩展程序之前,您需要执行以下操作:

转换函数

在将文档更改发送到 BigQuery 之前,您有机会使用 HTTP 函数转换数据。载荷将包含以下内容:

{ 
  data: [{
    insertId: int;
    json: {
      timestamp: int;
      event_id: int;
      document_name: string;
      document_id: int;
      operation: ChangeType;
      data: string;
    },
  }]
}

响应的结构应相同。

回填您的 BigQuery 数据集

此扩展程序仅发送已更改文档的内容 - 它不会将您现有文档的完整数据集导出到 BigQuery 中。因此,若要用集合中的所有文档回填 BigQuery 数据集,可以运行此扩展程序提供的 导入脚本

重要提示 :安装此扩展程序后,请对整个集合运行导入脚本,否则可能会丢失导入期间对数据库执行的所有写入操作。

生成架构视图

将数据导入 BigQuery 后,可以运行此扩展程序提供的 架构视图脚本 ,以创建能够更轻松地查询相关数据的视图。您只需要提供一个描述数据结构的 JSON 架构文件,该架构视图脚本即可创建视图。

结算

若要安装扩展程序,您的项目必须采用 Blaze(随用随付)方案

  • 您需要为此扩展程序所需的 Firebase 资源支付少量费用(通常约为 $0.01/月),即使没有使用此扩展程序也要支付。
  • 此扩展程序用到了其他 Firebase 和 Google Cloud Platform 服务,如果超出这些服务的免费层级,则会产生相关费用:
  • BigQuery(此扩展程序使用 流式插入 写入 BigQuery)
  • Cloud Firestore
  • Cloud Functions(Node.js 10+ 运行时。 查看常见问题解答

如何安装此扩展程序

使用 Firebase 控制台

要安装和管理扩展程序,您可以使用 Firebase 控制台。

使用控制台安装

使用 Firebase CLI

要安装和管理扩展程序,您还可以使用 Firebase CLI:

步骤 1 :运行以下 npm 命令来安装 CLI 或将 CLI 更新到最新版本。

npm install -g firebase-tools
不能运行?请参阅 Firebase CLI 参考文档 或者更改您的 npm 权限

第 2 步 设置一个新的 Firebase 项目目录 或转到现有目录

第 3 步 :将此扩展程序添加到 扩展程序清单

firebase ext:install firebase/firestore-bigquery-export --local --project=projectId_or_alias

Step 4 (Optional): Test this extension locally with the Firebase Emulator Suite

firebase emulators:start

第 5 步 :将清单中的扩展程序 部署 到项目中

firebase deploy --only extensions --project=projectId_or_alias
支持
Cloud Firestore
作者
许可
Apache-2.0
版本
0.1.25