如何将Firestore历史及新增文档按表格格式自动同步至BigQuery
Firestore全量+增量同步到扁平化BigQuery表解决方案
你不需要从零编写全量同步的Cloud Function,基于官方扩展加BigQuery视图即可实现需求,步骤如下:
步骤1:正确配置官方Export Collections to BigQuery扩展
安装扩展时完成两个配置:
- 勾选「同步集合中现有历史文档」选项,所有存量数据会自动导入到扩展生成的原始变更日志表中
- 开启增量同步,后续所有文档的新增、更新、删除操作会自动写入同一张原始变更日志表
步骤2:在BigQuery中创建自定义视图得到目标表结构
扩展生成的原始表默认会存储每条变更的操作类型、时间戳、文档ID、完整文档数据,你只需要基于该表写一个取最新版本的视图即可得到符合要求的结构,示例SQL如下:
SELECT document_id AS id, JSON_VALUE(data, '$.name') AS name, CAST(JSON_VALUE(data, '$.score') AS INT64) AS score FROM `你的GCP项目ID.你的BigQuery数据集名称.扩展生成的原始表名` -- 过滤掉已删除的文档 WHERE operation != "DELETE" -- 取每个文档的最新版本数据 QUALIFY ROW_NUMBER() OVER (PARTITION BY document_id ORDER BY timestamp DESC) = 1
方案优势
- 无需自行维护同步逻辑:所有数据同步的重试、限流、异常处理都由官方扩展实现,运维成本极低
- 数据自动实时同步:视图查询时会自动读取最新的变更数据,无需额外操作即可获取Firestore的实时状态
- 结构完全匹配需求:可以根据业务需要灵活调整字段的拉平、类型转换逻辑,完全符合你期望的表结构
如果需要物理存储的表而非视图,只需配置BigQuery定时查询,按你需要的频率将视图结果写入物理表即可。
内容的提问来源于stack exchange,提问作者Sunil Chauhan
相关产品推荐
相关产品推荐

