Сглаживание нескольких повторяющихся полей в Google BigQuery
Я пытаюсь сгладить данные из повторяющихся полей в Big Query. Я посмотрел на этот запрос нескольких повторяющихся полей в BigQuery, однако я не могу заставить это работать.
Мои данные выглядят следующим образом:
[
{
"visitorId": null,
"visitNumber": "15",
"device": {
"browser": "Safari (in-app)",
"browserVersion": "(not set)",
"browserSize": "380x670",
"operatingSystem": "iOS",
},
"hits": [
{
"isEntrance": "true",
"isExit": "true",
"referer": null,
"page": {
"pagePath": "/news/bla-bla-bla",
"hostname": "www.example.com",
"pageTitle": "Win tickets!!",
"searchKeyword": null,
"searchCategory": null,
"pagePathLevel1": "/news/",
"pagePathLevel2": "/bla-bla-bla",
"pagePathLevel3": "",
"pagePathLevel4": ""
},
"transaction": null
}
]
}
]
То, что я хочу, это поля в повторяющихся полях на странице хитов.
Например, я хочу получить hit.page.pagePath (со значением "/news/bla-bla-bla")
Я пытался с помощью следующего запроса, но я получаю сообщение об ошибке:
SELECT
visitorId,
visitNumber,
device.browser,
hits.page.pagePath
FROM
`Project.Page`
LIMIT 1000
Ошибка, которую я получаю это
Error: Cannot access field page on a value with type ARRAY<STRUCT<hitNumber INT64, time INT64, hour INT64, ...>>
1 ответ
В ga_sessions
схема, поле hits
представляется как ARRAY
тип.
Обычно при работе с этим полем типа вам нужно применить операцию UNNEST, чтобы открыть массив.
В частности, в FROM
пункт, вы можете применить CROSS JOIN
(вы отменяете массивы, применяя операцию перекрестного соединения, которая может быть представлена в виде запятой, за которой следует функция UNNEST) следующим образом:
SELECT
visitorId,
visitNumber,
device.browser,
hits.page.pagePath
FROM `Project.Page`,
UNNEST(hits) hits
LIMIT 1000
Если вам нужны определенные pagePaths, вы можете отфильтровать их следующим образом:
SELECT
visitorId,
visitNumber,
device.browser,
hits.page.pagePath
FROM `Project.Page`,
UNNEST(hits) hits
WHERE regexp_contains(hits.page.pagePath, r'/news/bla-bla-bla')
LIMIT 1000
Обязательно ознакомьтесь с документацией BigQuery по этой теме, она действительно хорошо написана, и вы многое узнаете о новых методах обработки больших данных.