I would like to pivot the fields 'unitId', 'firebase_screen_class' so that each one appears in a separate column:
SELECT
event.name,
event_param.value.string_value AS ad_unit,
COUNT(*) AS event_count
FROM
`app_events_20170510`,
UNNEST(event_dim) AS event,
UNNEST(event.params) as event_param
WHERE
event.name in ('Ad_requested', 'Ad_clicked', 'Ad_shown')
and event_param.key in ('unitId', 'screen_class')
GROUP BY 1,2
I have used the following query using legacy SQL but it is not showing the correct aggregation results:
SELECT event_name, ad_unit, count(*) FROM
(
SELECT
event_dim.name as event_name,
MAX(IF(event_dim.params.key = "firebase_screen_class", event_dim.params.value.string_value, NULL)) WITHIN RECORD as firebase_screen_class,
MAX(IF(event_dim.params.key = "unitId", event_dim.params.value.string_value, NULL)) WITHIN RECORD as ad_unit
FROM
[app_events_20170510]
WHERE
event_dim.name in ('Ad_requested','Ad_shown', 'Ad_clicked')
and event_dim.params.key in ('unitId','screen_class')
)
group by 1,2
I am looking for the following output:
_________________________________________________________________________
| event_dim.name | unitId | screen_class | count_events|
|__________________|________________|______________________|_____________|
| Ad_requested | hpg | socialFeed | 520 |
|__________________|________________|______________________|_____________|
| Ad_shown | hpg | chat | 950 |
|__________________|________________|______________________|_____________|
| Ad_requested | hni | chat | 740 |
|__________________|________________|______________________|_____________|
All events Ad_requested
, Ad_shown
and Ad_clicked
have parameters with the same keys(unitId
, screen_class
) and also the same values for each key (unitId
: hpg
, hni
/ screen_class
: socialFeed
, chat
)
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…