首页 > 解决方案 > BigQuery - 根据另一个事件参数选择事件参数值

问题描述

在此处输入图像描述在我的应用中,每当用户打开某个视图时,我都会向 Firebase 分析发送一个事件“content_view”。此事件有两个与之关联的事件参数:content_type 和 title。content_type 始终是“音频”、“故事”、“视频”或“图像”,然后标题是不言自明的。

然后该数据进入 Big Query。

在 Big Query 中,我想按标题和事件数量列出观看次数最多的 5 个视频。我可以按标题获得前 5 个事件,但我不知道如何仅对 content_type = 'video' 的事件执行此操作。

有没有办法建立一个返回这样的查询?

+---------+-------------+--------------+
|  Title  | Total Views | Content Type |
+---------+-------------+--------------+
| Video 1 |        1000 | video        |
| Video 2 |         900 | video        |
| Video 3 |         800 | video        |
| Video 4 |         700 | video        |
| Video 5 |         600 | video        |
+---------+-------------+--------------+

标签: sqlfirebasegoogle-bigqueryfirebase-analytics

解决方案


以下是 BigQuery 标准 SQL,基于您提供的(并经过测试)架构

#standardSQL
SELECT 
  (
    SELECT MAX(IF(key = 'title', value.string_value, NULL)) title
    FROM UNNEST(event_params) param 
    WHERE (key = 'content_type' AND value.string_value = 'video')
    OR key = 'title'
    HAVING COUNT(1) = 2
  ) Title,
  COUNT(1) TotalViews
FROM `project.dataset.table`
GROUP BY Title
HAVING NOT title IS NULL
ORDER BY TotalViews DESC
LIMIT 5

推荐阅读