如何将集合和子集合一起从 firestore 导出到 excel 或 bigquery 表?

Posted

技术标签:

【中文标题】如何将集合和子集合一起从 firestore 导出到 excel 或 bigquery 表?【英文标题】:How to export collections and sub collections together from firestore to excel or bigquery table? 【发布时间】:2020-05-27 17:28:47 【问题描述】:

在 Cloud Firestore 中,我有一个“用户”集合,其中包含我用户的所有 ID。每个用户 id 都有一个 'Favorite Routes' 子集合,其中可以找到每条收藏路线的标识符,并且每个收藏路线 id 都包含收藏路线的所有详细信息。 经过几次尝试,我无法导出所有内容,以便我们可以清楚地看到哪个用户有什么最喜欢的路线。 更清楚地说,我无法导出带有子集合的集合。 我想执行此导出并在 bigquery 中创建一个表,以便在 google data studio 中或以 excel 表的形式查看。

我试图这样做: gcloud firestore export gs://exportation-users/export-27-05-2020 --collection-ids=utilisateurs,trajetsFavoris

这使得导出但无法在 bigquery 中创建表或创建 excel 文件。

感谢您的帮助

【问题讨论】:

【参考方案1】:

根据documentation,您可以使用gcloud firestore export命令将集合和子集合导出到云存储桶。如上所述,在此命令中,您可以选择带有 --collection-ids 标志的集合和子集合。另外,导出大表时最好使用--async标志。

将数据导出到指定存储桶后,您可以使用bq load 命令link 将数据加载到BigQuery。对于每个集合和/或子集合将有一个表,因此执行两次(在您的情况下,您将导入 1 个集合和 1 个子集合)。语法如下:

bq --location=US load \
--source_format=DATASTORE_BACKUP \
mydataset.book_data \
gs://mybucket/20180228T1256/default_namespace/kind_Book/default_namespace_kind_Book.export_metadata

我想指出 --source_format=DATASTORE_BACKUP 是强制性的,它是 Firestore 导出的格式。所有其他字段应根据您的环境进行更改。

最后,我必须指出,Firestore 中的每个文档都有唯一的键,其中包含有关数据的重要信息。在这些键中,您有 key.name,它存储了父文档键,它可以用来加入集合及其各自的子集合。

最后,您还可以使用 Cloud Functions 来创建存储桶,将数据导出到存储桶并将数据导入 BigQuery,可以找到示例here。

【讨论】:

谢谢您的回答,您知道是否可以将集合和子集合放在一个表格中 @OrenCohen,是的,是的。您选择要在 BigQuery 中的 2 个不同表中加载的集合和子集合。比您可以使用表的keys 来加入集合及其各自的子集合。我还找到了另一个可能对link 有帮助的教程。请不要忘记接受并投票。

以上是关于如何将集合和子集合一起从 firestore 导出到 excel 或 bigquery 表?的主要内容,如果未能解决你的问题,请参考以下文章

Firestore:如何同时收听集合和子集合

FireStore 文档如何在子集合中读取计算

如何从 Firestore 中删除集合或子集合?

如何将子集合添加到 Firebase Cloud Firestore 中的文档

如何在 Firebase + Firestore + Flutter 中使用 StreamBuilder 将所有子集合数据获取到 Widget

如何使用 Flutter 获取 Firestore 中每个集合的子集合