如何将集合和子集合一起从 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 表?的主要内容,如果未能解决你的问题,请参考以下文章
如何将子集合添加到 Firebase Cloud Firestore 中的文档
如何在 Firebase + Firestore + Flutter 中使用 StreamBuilder 将所有子集合数据获取到 Widget