Я получаю следующую таблицу с запросом внизу:
SELECT
fullVisitorId,
COUNT(fullVisitorId) as id_count,
ARRAY_AGG(trafficSource.medium) AS trafic_medium
FROM
`bigquery-public-data.google_analytics_sample.ga_sessions_20170101`
GROUP BY
fullVisitorId
ORDER BY
id_count DESC
Для каждого из значений в столбце trafic_medium
(например, cp c, referral, organi c, et c.) Я пытаюсь выяснить, как часто каждое значение встречается в массиве, поэтому желательно добавить новый столбец 'count', показывающий, как часто это значение встречалось?
+-----------+---------+------+
| array_agg | medium | count|
+-----------+---------+------+
| 123 | cpc | 2 |
+-----------+---------+------+
| | organic | 1 |
+-----------+---------+------+
| | cpc | 2 |
+-----------+---------+------+
| 456 | organic | 2 |
+-----------+---------+------+
| | organic | 2 |
+-----------+---------+------+
| | cpc | 1 |
+-----------+---------+------+
Я новичок в SQL, поэтому я довольно застрял.
Я пробовал это до сих пор:
WITH medium AS
(
SELECT
fullVisitorId,
COUNT(fullVisitorId) as id_count,
ARRAY_AGG(trafficSource.medium) AS trafic_medium
FROM
`bigquery-public-data.google_analytics_sample.ga_sessions_20170101`
GROUP BY
fullVisitorId
ORDER BY
id_count DESC
)
SELECT
fullVisitorId,
trafic_medium,
(SELECT AS STRUCT Any_Value(trafic_medium) AS name, COUNT(*) AS count
FROM
UNNEST(trafic_medium) AS trafic_medium) AS trafic_medium_2,
FROM
medium
Основано на этой теме: Как частота счета элементов в поле массива больших запросов
Однако это показывает только число 'Any_Value, не для всех различных.
Я был бы признателен за некоторую помощь!
PS Я делаю это в BigQuery на 'bigquery-publi c -dataset.google_analytics_sample'