update event metrics to return event data grouped by event data
parent
53523ed3db
commit
c1eaa55070
|
@ -52,18 +52,37 @@ async function relationalQuery(
|
||||||
const filterQuery = getFilterQuery(filters, params);
|
const filterQuery = getFilterQuery(filters, params);
|
||||||
|
|
||||||
return rawQuery(
|
return rawQuery(
|
||||||
`select
|
`with event_data as (
|
||||||
event_name x,
|
select d.website_event_id,
|
||||||
event_data d,
|
jsonb_object_agg(
|
||||||
${getDateQuery('created_at', unit, timezone)} t,
|
d.event_key,
|
||||||
|
case
|
||||||
|
d.event_data_type
|
||||||
|
when 1 then to_jsonb(d.event_string_value) -- string
|
||||||
|
when 2 then to_jsonb(d.event_numeric_value) -- number
|
||||||
|
when 3 then to_jsonb(d.event_bool_value) -- boolean
|
||||||
|
when 4 then to_jsonb(d.event_date_value) -- date
|
||||||
|
when 5 then d.event_string_value::jsonb -- array
|
||||||
|
end
|
||||||
|
) filter (
|
||||||
|
where d.event_key is not null
|
||||||
|
) as event_data
|
||||||
|
from event_data d
|
||||||
|
group by d.website_event_id
|
||||||
|
)
|
||||||
|
select
|
||||||
|
w.event_name x,
|
||||||
|
e.event_data d,
|
||||||
|
${getDateQuery('w.created_at', unit, timezone)} t,
|
||||||
count(*) y
|
count(*) y
|
||||||
from website_event
|
from website_event w
|
||||||
|
left join event_data d on w.event_id = d.website_event_id
|
||||||
where website_id = $1${toUuid()}
|
where website_id = $1${toUuid()}
|
||||||
and created_at >= $2
|
and created_at >= $2
|
||||||
and created_at between $3 and $4
|
and created_at between $3 and $4
|
||||||
and event_type = ${EVENT_TYPE.customEvent}
|
and event_type = ${EVENT_TYPE.customEvent}
|
||||||
${filterQuery}
|
${filterQuery}
|
||||||
group by 1, 3
|
group by 1, 2, 3
|
||||||
order by 3`,
|
order by 3`,
|
||||||
params,
|
params,
|
||||||
);
|
);
|
||||||
|
@ -94,18 +113,37 @@ async function clickhouseQuery(
|
||||||
const params = { websiteId };
|
const params = { websiteId };
|
||||||
|
|
||||||
return rawQuery(
|
return rawQuery(
|
||||||
`select
|
`with event_data as (
|
||||||
event_name x,
|
select d.website_event_id,
|
||||||
event_data d,
|
jsonb_object_agg(
|
||||||
${getDateQuery('created_at', unit, timezone)} t,
|
d.event_key,
|
||||||
|
case
|
||||||
|
d.event_data_type
|
||||||
|
when 1 then to_jsonb(d.event_string_value) -- string
|
||||||
|
when 2 then to_jsonb(d.event_numeric_value) -- number
|
||||||
|
when 3 then to_jsonb(d.event_bool_value) -- boolean
|
||||||
|
when 4 then to_jsonb(d.event_date_value) -- date
|
||||||
|
when 5 then d.event_string_value::jsonb -- array
|
||||||
|
end
|
||||||
|
) filter (
|
||||||
|
where d.event_key is not null
|
||||||
|
) as event_data
|
||||||
|
from event_data d
|
||||||
|
group by d.website_event_id
|
||||||
|
)
|
||||||
|
select
|
||||||
|
w.event_name x,
|
||||||
|
d.event_data d,
|
||||||
|
${getDateQuery('w.created_at', unit, timezone)} t,
|
||||||
count(*) y
|
count(*) y
|
||||||
from website_event
|
from website_event w
|
||||||
|
left join event_data d on w.event_id = d.website_event_id
|
||||||
where website_id = {websiteId:UUID}
|
where website_id = {websiteId:UUID}
|
||||||
and event_type = ${EVENT_TYPE.customEvent}
|
and w.event_type = ${EVENT_TYPE.customEvent}
|
||||||
and created_at >= ${getDateFormat(resetDate)}
|
and w.created_at >= ${getDateFormat(resetDate)}
|
||||||
and ${getBetweenDates('created_at', startDate, endDate)}
|
and ${getBetweenDates('w.created_at', startDate, endDate)}
|
||||||
${getFilterQuery(filters, params)}
|
${getFilterQuery(filters, params)}
|
||||||
group by x, t
|
group by x, d, t
|
||||||
order by t`,
|
order by t`,
|
||||||
params,
|
params,
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in New Issue