BigQuery SQL: невозможно запросить перекрестное произведение повторяющихся полей /

Моя цель - отфильтровать всех посетителей, проанализировать только клиентов (которые находятся в customDimension.index =2, а затем дополнительно отфильтровать только определенные типы просмотров страниц для клиентов.

SELECT customDimensions.value AS CustomerID,
SUM(totals.pageviews) as page_views,
SUM(CASE WHEN hits.type = 'PAGE' AND hits.contentGroup.contentGroup2 = 'important' THEN 1 ELSE 0 END) AS important_pageviews
FROM `xxxxxxxx.ga_sessions_20180415`
WHERE customDimensions.index = 2
GROUP BY CustomerID 

Я получаю сообщение об ошибке (используя StandardSQL):

Error: Cannot access field index on a value with type
ARRAY<STRUCT<index INT64, value STRING>> at [5:24]

Для устаревшего SQL:

Ошибка: невозможно запросить перекрестное произведение повторяющихся полей customDimensions.index и hits.contentGroup.contentGroup2.

Изменить:

SELECT cd.value AS CustomerID,
SUM(totals.pageviews) as page_views,
SUM(CASE WHEN hits.type = 'PAGE' AND hits.contentGroup.contentGroup2 = 'important' THEN 1 ELSE 0 END) AS important_pageviews
FROM `xxxxxxxx.ga_sessions_20180415`,
UNNEST(customDimensions) AS cd
WHERE cd.index = 2
GROUP BY CustomerID 

возвращает:

Error: Cannot access field type on a value with type ARRAY<STRUCT<hitNumber INT64, time INT64, hour INT64, ...>> at [3:20]

Я попытался исправить строку 3:20, используя UNNEST(hits.type) = 'PAGE' AND UNNEST(hitscontentGroup.contentGroup2) = 'important', что дает Error: Syntax error: Unexpected keyword UNNEST at [3:15]


person GRS    schedule 16.04.2018    source источник
comment
Я думаю, вы ищете unnest. FROM xxxxxxxx.ga_sessions_20180415, unnset(customDimensions) as cd where cd.index = 2 (также вы можете отменить вложенность в подзапросе, чтобы сохранить количество строк)   -  person dani herrera    schedule 16.04.2018
comment
@danihp Я все еще получаю ту же ошибку (стандартный SQL) - Ошибка: невозможно получить доступ к значению поля для значения с типом ARRAY‹STRUCT‹index INT64, значение STRING›› в [1:25]   -  person GRS    schedule 16.04.2018
comment
@ГРС . . . У вас есть массив. Вам нужно извлечь один или несколько элементов из массива для запроса. Было бы полезно, если бы мы могли видеть, как выглядят данные.   -  person Gordon Linoff    schedule 16.04.2018


Ответы (1)


Поскольку customDimensions — это массив, вам потребуется unnest это, чтобы ссылаться на его содержимое, см. приведенный ниже пример StandardSQL, где я отделяю UserID от данных Google Analytics в BigQuery:

SELECT customDimension.value AS UserID
FROM `my.project.data` AS t
  CROSS JOIN UNNEST(t.customdimensions) AS customDimension
  WHERE customDimension.index = 2
person Ben P    schedule 16.04.2018
comment
спасибо, но я пытаюсь объединить 2 негнезда вместе. После добавления во второй строке t.hits.contentGroup.contentGroup2 для получения данных о количестве страниц, просмотренных этими клиентами, возвращаюсь к своей ошибке. - person GRS; 16.04.2018
comment
Извините, а где ваш второй негнездо, я вижу только один? Вы можете добавить еще один unnest сразу после первого, чтобы unnest дальше? - person Ben P; 16.04.2018