BigQuery - Select 事件参数值基于另一个事件参数
BigQuery - Select event param value based on another event param
在我的应用中,每当用户打开某个特定视图时,我都会向 Firebase 分析发送一个事件 'content_view'。此事件有两个关联的事件参数:content_type 和标题。 content_type 始终是 'audio'、'story'、'video' 或 'image',然后标题是 self-explanatory。
然后该数据进入 Big Query。
在 Big Query 中,我想按标题和事件数列出观看次数最多的前 5 个视频。我可以按标题获得前 5 个事件,但我无法弄清楚如何只对 content_type = 'video'.
的事件执行此操作
有没有一种方法可以构建 returns 类似这样的查询?
+---------+-------------+--------------+
| 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 |
+---------+-------------+--------------+
修改以适合您的列名和您的 project/dataset/table 姓名:
SELECT title, total_views, content_type
FROM `myproject.mydataset.mytable`
WHERE content_type = 'video'
以下适用于 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
然后该数据进入 Big Query。
在 Big Query 中,我想按标题和事件数列出观看次数最多的前 5 个视频。我可以按标题获得前 5 个事件,但我无法弄清楚如何只对 content_type = 'video'.
的事件执行此操作有没有一种方法可以构建 returns 类似这样的查询?
+---------+-------------+--------------+
| 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 |
+---------+-------------+--------------+
修改以适合您的列名和您的 project/dataset/table 姓名:
SELECT title, total_views, content_type
FROM `myproject.mydataset.mytable`
WHERE content_type = 'video'
以下适用于 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