如何从 flutter firestore 中获取计数和不同的字符串值?

How to get count and different string values from flutter firestore?

我在 Firestore 中有一个文档,其中有一个类别 value/field。我通过 UI 上的单选按钮向它发送值。因此,firestore 对该字段只有 1 个字符串值,总共有 4 种可能性。

UI- 颜色、高度、宽度、风味 Firestore - 字段=类别,值=颜色或高度或宽度或味道

现在我想用这些值创建图表,其中所有四个选项都显示为单独的条形图,它们的出现频率为。

我可以使用文档快照从 firestore 获取数据。但不确定如何从这里开始。

我如何创建单独的变量,在其中捕获所有这些选项,然后计算它们的数量。

请帮忙,谢谢。我正在使用 Flutter

How can i create separate variables where all these options are captured and then their count?

可能的解决方案取决于您希望在何处显示图表以及您希望如何calculate/prepare和存储这些图表的数据。

如果您想在 Flutter 应用程序中显示图表

如果您想在 Flutter 应用程序中显示图表,将数据存储在 Firestore 中是一个很好的方法,因为您可以使用 Flutter 插件轻松查询数据,并且可以将 Firestore 安全规则应用于图表数据保护其他应用程序数据的方式。

但是,您应该避免在每次要显示图表时查询 所有 Firestore 文档,因为这可能会迅速增加您的账单金额...推荐的方法是维护 counters 保存聚合值。正如文档中所解释的:“每个计数器都是一个包含 shards 子集合的文档,计数器的值是这些碎片值的总和”。

由于您将数据保存在一个字段中,一个好的方法是使用 Cloud Function 递增一组 counters.

更准确地说,每次文档为 created/modified 时,云函数将读取“一个字段”值,并根据它是 color 还是 heightwidthflavour,更新一个(或多个)计数器。如果图表中的唯一维度是类别,则您只需要 4 个计数器(colorheightwidthflavor)。如果您想要其他维度(例如 time 或字段的其他类别或特定值,例如不同的 colors 或不同的 heights),您将需要更多计数器。

如果你想在另一个显示图表app/tool

如果您需要在另一个应用程序或工具中显示这些图表,例如后台应用程序或 Google Data Studio 或 QlikView 等 BI/Analytics 工具,有一个有趣的选择:您可以使用 Firebase Extension named "Export Collections to BigQuery", which allows exporting the documents in a Cloud Firestore collection to BigQuery,由 Google Cloud 提供的无服务器、高度可扩展的企业数据仓库。

当数据位于 BigQuery 中时,您可以使用 SQL 语言构建 SQL 视图并准备数据以进行可视化。特别是聚合查询要容易得多,因为您使用 SQL 并且不需要维护 Firestore 计数器(如果您有很多维度,它会变得很麻烦)。

我最近写了一篇关于如何配置此扩展的 article,其中包括聚合查询的简单示例。

混合两种方法

如果你想在你的 Flutter 应用程序中显示图表并且你的图表非常复杂(很多维度,即许多不同的颜色,高度,......按年,月,周等聚合...... ) 您可以通过以下方式利用这两种方法:

  1. 通过扩展程序将数据导出到 BigQuery
  2. 在 BigQuery 中构建一些 SQL 视图以准备图表数据
  3. 使用 Cloud Functions 将图表数据从 BigQuery 导出到 Firestore 文档
  4. 从 Flutter 应用查询这些 Firestore 文档