BigQuery - Выберите значение параметра события на основе другого параметра события - PullRequest
0 голосов
/ 24 января 2019

enter image description here В моем приложении я отправляю событие «content_view» в аналитику Firebase всякий раз, когда пользователь открывает одно определенное представление.С этим событием связаны два параметра события: content_type и title.content_type всегда либо 'audio', 'story', 'video', либо 'image', а затем заголовок не требует пояснений.

Эти данные затем отправляются в большой запрос.

В большомЗапрос, я хочу перечислить 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 голосов
/ 24 января 2019

Ниже для стандартного SQL BigQuery и основан на ( и проверен на ) схеме, которую вы предоставили

#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
0 голосов
/ 24 января 2019

Изменить в соответствии с именами столбцов и именем вашего проекта / набора данных / имени таблицы:

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