BigQuery 和 Firebase - 基于键对事件值求和

Posted

技术标签:

【中文标题】BigQuery 和 Firebase - 基于键对事件值求和【英文标题】:BigQuery & Firebase - Sum event Value based on Key 【发布时间】:2017-01-24 12:19:49 【问题描述】:

在我的 android 应用程序中,我将用户选择的项目数记录如下

public static void trackItemsSelectedCount(Context context, int count) 
    Bundle bundle = new Bundle();
    bundle.putInt("count", count);
    getAnalytics(context).logEvent("items_selected", bundle);

在 BigQuery 中,我可以计算具有事件 items_selected 的条目数,如下所示

SELECT event_dim.name as event,
COUNT(event_dim.name) as event_count
FROM TABLE_DATE_RANGE(package_ANDROID.app_events_intraday_, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP())
where event_dim.name contains 'items_selected'
GROUP BY event
ORDER BY event DESC LIMIT 1;

我想得到event_dim.params.value.int_value 的总和,与count 一样event_dim.params.key

到目前为止,我正在执行以下操作,但这可能不准确(因为 event_dim.params.key 没有出现在任何地方)。任何更精确查询的想法将不胜感激:

SELECT event_dim.name as event,
COUNT(event_dim.name) as event_count ,
COUNT(event_dim.params.value.int_value) as value_count
FROM TABLE_DATE_RANGE(package_ANDROID.app_events_intraday_, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP())
where event_dim.name contains 'items_selected'
GROUP BY event
ORDER BY event DESC LIMIT 1;

回答

SELECT 
    SUM((SELECT params.value.int_value FROM x.params WHERE params.key = 'count')) AS count 
FROM package_ANDROID.app_events_20170123, UNNEST(event_dim) AS x
WHERE x.name = 'items_selected'

【问题讨论】:

你读过类似的过去的问题吗,比如这个? ***.com/questions/41090396/… 我还没有找到这个。谢谢。经过调查,我想出了以下查询:SELECT SUM((SELECT params.value.int_value FROM x.params WHERE params.key = 'count')) AS count FROM package_ANDROID.app_events_20170123, UNNEST(event_dim) AS x WHERE x.name = 'items_selected' 太棒了!您可能希望将其发布为您问题的答案,以便其他人可以更轻松地找到解决方案。 答案仍有待验证,但我同时将其添加到答案中。欢呼 @TurhanTech - 您应该将您的答案作为实际答案 - 而不仅仅是对您的问题的更新。这是允许的,并且在 SO 上被认为是好的,除非您当然已经有了更好的答案。更重要的是-如果您的答案是您问题的所有答案中最好的-您可以接受(尽管您不能投票自己的答案):o) 【参考方案1】:
SELECT 
    SUM((SELECT params.value.int_value FROM x.params WHERE params.key = 'count')) AS count 
FROM package_ANDROID.app_events_20170123, UNNEST(event_dim) AS x
WHERE x.name = 'items_selected'

【讨论】:

虽然这可能是正确的答案,但它并不能解释为什么它会起作用。

以上是关于BigQuery 和 Firebase - 基于键对事件值求和的主要内容,如果未能解决你的问题,请参考以下文章

如何获取Firebase Analytics的数据受众?

如何从 BigQuery 中的 Array(Struct) 类型数据结构中获取每个键名的值

BigQuery 和 Firebase - 如何确定每周增长

firebase 和 BigQuery 的保留结果不匹配

如何将 Bigquery 重复记录转换为列?

如何加入 Firebase 和 BigQuery