BigQuery - экспорт различных событий из Google Analytics

Вероятно, вопрос для начинающих, но я просто не мог найти здесь душевный покой.

Я хочу экспортировать различные события (только общую метрику событий) в BigQuery из своего аккаунта Google Analytics.

Так, например, у меня есть событие загрузки и событие поиска, и я хочу, чтобы каждое из них было в одном столбце, показывая мне общую метрику событий для каждого события. Я отфильтровал оба события для разных условий, чтобы убедиться, что у меня правильное событие.

Я использую LegacySQL здесь и хочу экспортировать все данные из одной таблицы. Проблема в том, что в LegacySQL не разрешен подвыбор, есть мысли о том, как я могу решить эту проблему?

SELECT  clientId, totals.timeOnSite, trafficSource.source,
(SELECT hits.eventInfo.eventAction FROM (TABLE_DATE_RANGE([xxxxxx.ga_sessions_], TIMESTAMP('2018-11-25'), TIMESTAMP('2018-11-25')))   WHERE hits.eventInfo.eventCategory = 'Download' AND hits.type = 'EVENT' AND hits.eventInfo.eventAction = 'pdf') AS DownloadEvent,
(SELECT hits.eventInfo.eventLabel FROM (TABLE_DATE_RANGE([xxxxxx.ga_sessions_], TIMESTAMP('2018-11-25'), TIMESTAMP('2018-11-25')))   WHERE hits.eventInfo.eventLabel  = 'search-header' OR 'search-mainpage' AND hits.type = 'EVENT') AS SearchEvent,

COUNT(1) eventHits FROM (TABLE_DATE_RANGE([xxxxxx.ga_sessions_], TIMESTAMP('2018-11-25'), TIMESTAMP('2018-11-25')))

1 ответ

Подвыборы разрешены в BQ Legacy SQL. Ниже приведены результаты, которые вы ищете.

Вам не нужно использовать подзапрос здесь. Используя простой CASE Заявление должно сделать свое дело. Оператор case будет фильтровать строки, соответствующие искомому условию.

запрос

SELECT 
clientId,
totals.timeOnSite, 
trafficSource.source,
SUM(COUNT(CASE WHEN (hits.eventInfo.eventCategory = 'Download' AND hits.type = 'EVENT' AND hits.eventInfo.eventAction = 'pdf') THEN hits.eventInfo.eventAction END)) AS DownloadEvent,
SUM(COUNT(CASE WHEN (hits.eventInfo.eventLabel  = 'search-header' OR hits.eventInfo.eventLabel  = 'search-mainpage') AND hits.type = 'EVENT' THEN hits.eventInfo.eventLabel END)) AS SearchEvent
FROM TABLE_DATE_RANGE([xxxxxx.ga_sessions_], TIMESTAMP('2018-11-25'), TIMESTAMP('2018-11-25'))
GROUP BY 1,2,3

Теперь, если вы хотите использовать подзапрос, вот как это будет выглядеть

С подзапросом

SELECT  
b.clientId, 
b.totals.timeOnSite, 
b.trafficSource.source,
SUM(a.DownloadEvent),
SUM(a.SearchEvent)
FROM
(TABLE_DATE_RANGE([xxxxxx.ga_sessions_], TIMESTAMP('2018-11-25'), TIMESTAMP('2018-11-25'))) AS b 
INNER JOIN (
SELECT 
clientId,
totals.timeOnSite, 
trafficSource.source,
COUNT(CASE WHEN (hits.eventInfo.eventCategory = 'Download' AND hits.type = 'EVENT' AND hits.eventInfo.eventAction = 'pdf') THEN hits.eventInfo.eventAction END) AS DownloadEvent,
COUNT(CASE WHEN (hits.eventInfo.eventLabel  = 'search-header' OR hits.eventInfo.eventLabel  = 'search-mainpage') AND hits.type = 'EVENT' THEN hits.eventInfo.eventLabel END) AS SearchEvent
FROM TABLE_DATE_RANGE([xxxxxx.ga_sessions_], TIMESTAMP('2018-11-25'), TIMESTAMP('2018-11-25'))
GROUP BY 1
) AS a ON b.clientId = a.clientId
GROUP BY 1,2,3
Другие вопросы по тегам