I would like to rotate the "unitId", "firebase_screen_class" fields 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 used the following query using legacy SQL, but it does not show 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 ), as well as the same values ββfor each key ( unitId : hpg , hni / screen_class : socialFeed , chat )