Ниже приведен стандартный пример Sql:
--Data
WITH data AS (
SELECT 'BI' AS event_name,
[STRUCT('label' AS key ,'click' AS value), ('action','viewProfile_Sent'), ('category','BI')] AS events,
[STRUCT('MemRegDate' AS key ,'val1' AS value), ('FreeMember','val2'), ('','')] AS user
),
label AS (
SELECT event_name, events.value AS label
FROM data, UNNEST(data.events) as events
where events.key = 'label'
),
action AS (
SELECT event_name, events.value AS action
FROM data, UNNEST(data.events) as events
where events.key = 'action'
),
category AS (
SELECT event_name, events.value AS category
FROM data, UNNEST(data.events) as events
where events.key = 'category'
),
MemRegDate AS (
SELECT event_name, user.value AS value
FROM data, UNNEST(data.user) as user
where user.key = 'MemRegDate'
),
FreeMember AS (
SELECT event_name, user.value AS value
FROM data, UNNEST(data.user) as user
where user.key = 'FreeMember'
)
--Query
SELECT data.event_name, category.category, action.action, label.label,
MemRegDate.value AS MemRegDate_val, FreeMember.value AS FreeMember_val
from data left join label on data.event_name = label.event_name
left join action on data.event_name = action.event_name
left join category on data.event_name = category.event_name
left join MemRegDate on data.event_name = MemRegDate.event_name
left join FreeMember on data.event_name = FreeMember.event_name
Этот запрос приводит к следующему выводу, который является ожидаемым результатом, который вы задали в своем вопросе:
![enter image description here](https://i.stack.imgur.com/93h1x.png)