Reputation: 41665
Suppose I have a table with columns
event_name,
event_date,
event_key,
event_value
I 'm interested in two event_names review_meta_with_product
and review_meta_click_purchase_product
For each of the two event_names, I want aggregate count for each (event_date, event_key, event_value)
group.
I have currently two queries for two event_names, wonder if they could be combined.
(The following is a query for BigQuery, but I think the idea is still applicable to regular sql.)
select event.date, event.name as event_name, event_param.value.string_value as review_meta_name, count(*) as ct from `com_zibann_littlehome_debugEug_ANDROID.app_events_20180403`,
UNNEST(event_dim) as event,
UNNEST(event.params) as event_param
where DATE(TIMESTAMP_MICROS(event.timestamp_micros)) >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
and event.name = 'review_meta_with_product'
and event_param.key = "review_meta_name"
group by event.date, event.name, event_param.key, event_param.value.string_value
select event.date, event.name as event_name, event_param.value.string_value as review_meta_name, count(*) as ct from `com_zibann_littlehome_debugEug_ANDROID.app_events_20180403`,
UNNEST(event_dim) as event,
UNNEST(event.params) as event_param
where DATE(TIMESTAMP_MICROS(event.timestamp_micros)) >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
and event.name = 'review_meta_click_purchase_product'
and event_param.key = "review_meta_name"
group by event.date, event.name, event_param.key, event_param.value.string_value
Upvotes: 1
Views: 117
Reputation: 72165
Yes , it is possible to combine the two queries using conditional aggregation:
select event.date, event.name as event_name,
event_param.value.string_value as review_meta_name,
count(case
when event.name = 'review_meta_click_purchase_product'
then 1
end) as ct_purchase,
count(case
when event.name = 'review_meta_with_product'
then 1
end) as ct_product
from `com_zibann_littlehome_debugEug_ANDROID.app_events_20180403`,
UNNEST(event_dim) as event,
UNNEST(event.params) as event_param
where DATE(TIMESTAMP_MICROS(event.timestamp_micros)) >=
DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
and event.name IN ('review_meta_click_purchase_product', 'review_meta_with_product')
and event_param.key = "review_meta_name"
group by event.date,
event.name,
event_param.key,
event_param.value.string_value
Upvotes: 1