如何从 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
还是 height
或 width
或 flavour
,更新一个(或多个)计数器。如果图表中的唯一维度是类别,则您只需要 4 个计数器(color
、height
、width
、flavor
)。如果您想要其他维度(例如 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 应用程序中显示图表并且你的图表非常复杂(很多维度,即许多不同的颜色,高度,......按年,月,周等聚合...... ) 您可以通过以下方式利用这两种方法:
- 通过扩展程序将数据导出到 BigQuery
- 在 BigQuery 中构建一些 SQL 视图以准备图表数据
- 使用 Cloud Functions 将图表数据从 BigQuery 导出到 Firestore 文档
- 从 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
还是 height
或 width
或 flavour
,更新一个(或多个)计数器。如果图表中的唯一维度是类别,则您只需要 4 个计数器(color
、height
、width
、flavor
)。如果您想要其他维度(例如 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 应用程序中显示图表并且你的图表非常复杂(很多维度,即许多不同的颜色,高度,......按年,月,周等聚合...... ) 您可以通过以下方式利用这两种方法:
- 通过扩展程序将数据导出到 BigQuery
- 在 BigQuery 中构建一些 SQL 视图以准备图表数据
- 使用 Cloud Functions 将图表数据从 BigQuery 导出到 Firestore 文档
- 从 Flutter 应用查询这些 Firestore 文档