Я пытаюсь запросить мою аналитическую таблицу Google BigQuery.Поля, которые меня интересуют, являются вложенными.Структура, которую я хочу получить, подходит: Категория> Подкатегория> Подкатегория.
Я попытался сделать следующее:
select
event_param1.value.string_value AS category,
event_param2.value.string_value AS action,
ARRAY_AGG(DISTINCT event_param3.value.string_value) AS label
FROM `analytics.events_20*` AS t,
UNNEST(event_params) as event_param1,
UNNEST(event_params) as event_param2,
UNNEST(event_params) as event_param3
where
parse_date('%y%m%d', _table_suffix) between DATE_sub(current_date(), interval 30 day) and DATE_sub(current_date(), interval 1 day) AND
event_param1.key = 'category' and
event_param2.key = 'action' and
event_param3.key = 'label'
group by category, action
order by category, action
Но это возвращает одну строку с одной категорией, одной подкатегорией имассив всех подкатегорий.
Я хочу иметь одну строку с одной категорией, все подкатегории, все подкатегории в подкатегории.
Это пример того, что я получаю:
{
"category": "Apple Watch",
"action": "Apple Badge Clicked",
"label": [
"User Landing Page",
"Attract",
"Guest Landing Page",
"Guest In Workout",
"User In Workout"
]
},
{
"category": "Apple Watch",
"action": "CONNECTED",
"label": [
"User Landing Page",
"Attract",
"Guest Landing Page",
"Guest In Workout",
"User In Workout"
]
}
И это то, что я хочу:
{
"category": "Apple Watch",
"action": {
"Apple Badge Clicked": {
"label": [
"User Landing Page",
"Attract",
"Guest Landing Page",
"Guest In Workout",
"User In Workout"
]
},
"CONNECTED": {
"label": [
"User Landing Page",
"Attract",
"Guest Landing Page",
"Guest In Workout",
"User In Workout"
]
}
}
}
Если я попробую ARRAY_AGG внутри другого ARRAY_AGG, я получу Aggregations of aggregations are not allowed Bigquery
.Я знаю, что то, что я спрашиваю, не так просто, но аналогичное решение тоже подойдет.