BigQuery-根据其他事件参数选择事件参数值

时间:2019-01-24 00:02:17

标签: sql firebase google-bigquery firebase-analytics

puppet repos在我的应用中,每当用户打开某个视图时,我都会向Firebase Analytics发送事件“ content_view”。此事件具有与其关联的两个事件参数:content_type和title。 content_type始终是“音频”,“故事”,“视频”或“图像”,然后标题是不言自明的。

然后这些数据进入大查询。

在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        |
+---------+-------------+--------------+

2 个答案:

答案 0 :(得分:3)

以下内容适用于BigQuery Standard 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

答案 1 :(得分:0)

进行修改以适合您的列名和项目/数据集/表名的名称:

SELECT title, total_views, content_type
FROM `myproject.mydataset.mytable`
WHERE content_type = 'video'