将 BigQuery 中的多个 Firebase 数据集聚合为单个数据集

Posted

技术标签:

【中文标题】将 BigQuery 中的多个 Firebase 数据集聚合为单个数据集【英文标题】:Aggregate Many Firebase Datasets in BigQuery into Single Dataset 【发布时间】:2018-04-03 23:19:37 【问题描述】:

对于初学者来说,我对 Firebase 和 BigQuery 还比较陌生……所以有点天真……


背景

我正在开展一个项目,我们有许多不同的移动应用 - 每个国家/地区、每个操作系统(iosandroid)都有一个 - 所有原始事件数据都被推送到同一个项目中的 BigQuery 数据集中。按国家/地区划分不同应用的理由与监管要求有关。

出于仪表板的目的,我希望能够将所有数据集组合成一个聚合数据集(表按年份),通过我添加的“partition_date”列按日期分区。我的目标是利用 BigQuery 嵌套结构的功能,并维护原始 Firebase 表中的原始嵌套字段。

在过去一个月左右的时间里,我一直在四处寻找,但我没有遇到任何其他人们处理大量数据集的用例。


问题

采用这种方法是否有意义(将所有数据集聚合到一个按日期分区的表中,以及一个基于应用名称的嵌套字段)? 作为替代方案 - 我尝试对表格进行非规范化,表格按日期分片...虽然结果表格(不足为奇)由于嵌套结构变平而大得多,这让我认为这种方法不太理想。我真的应该考虑这种方法吗? 我是否应该考虑只制作一个相对简单的 KPI 汇总表?我避免使用这种方法,因为它限制了我使用动态计算唯一用户的日期范围过滤器的能力(在 Data Studio 中使用 COUNT_DISTINCT(user_dim.app_info.app_instance_id)

最终目标是让任何用户(例如,不懂 SQL 的人)能够回答所有应用程序中的简单问题(例如,昨天有多少用户打开了应用程序),并让最终用户在仪表板界面中使用日期范围过滤器。

我已经能够编写临时查询以通过查询所有数据集来获得答案,但我还没有找到一个好的解决方案,可以让仪表板中的非技术用户更轻松。

另外,这是我的第一个 Stack Overflow 问题...如果我太含糊,包括太多问题,或者滥用平台,请告诉我。

提前感谢您的任何想法。

【问题讨论】:

【参考方案1】:

如果您的最终目标是让用户能够回答简单的问题,那么汇总 KPI 数据对我来说很有意义。我可能会通过设置一个计划的每日作业来解决此问题,该作业从所有数据集中选择相关数据并将其加载到一个新数据集中,然后可以在 Data Studio 中使用。新数据集可以具有默认的 Firebase 日期表后缀以支持日期范围过滤器。

不过,我对 BigQuery 和 Firebase 也比较陌生,所以也许有更好的方法。

您可以在此处找到有关 BigQuery 计划的更多信息:Schedule query in BigQuery

【讨论】:

以上是关于将 BigQuery 中的多个 Firebase 数据集聚合为单个数据集的主要内容,如果未能解决你的问题,请参考以下文章

将 Fabric 流中的重复事件复制到 Firebase-> Google Bigquery 流中

如何计算Firebase中的MAU?我需要BigQuery吗?

从firebase传输后bigquery表中的数据是不是被覆盖?

如何从 BigQuery 中的 Firebase 事件中获取用户表?

如何将 Firebase BigQuery 集成“数据集生存时间”从 60 天更改为不会过期?

在链接到 BigQuery 之前,有啥方法可以访问 Firebase 原始事件数据?