mirror of
https://github.com/umami-software/umami.git
synced 2026-02-09 15:17:23 +01:00
Funnel form.
This commit is contained in:
parent
dd2db308ee
commit
1130bca195
19 changed files with 460 additions and 45 deletions
|
|
@ -129,8 +129,8 @@ function getFunnelQuery(urls: string[]): {
|
|||
return urls.reduce(
|
||||
(pv, cv, i) => {
|
||||
pv.columnsQuery += `\n,url_path = {url${i}:String}${
|
||||
i > 0 && urls[i - 1] ? ` AND request_url = {url${i - 1}:String}` : ''
|
||||
},'`;
|
||||
i > 0 && urls[i - 1] ? ` AND referrer_path = {url${i - 1}:String}` : ''
|
||||
}`;
|
||||
pv.conditionQuery += `${i > 0 ? ',' : ''} {url${i}:String}`;
|
||||
pv.urlParams[`url${i}`] = cv;
|
||||
|
||||
|
|
@ -150,7 +150,7 @@ function parseFilters(filters: WebsiteMetricFilter = {}, params: any = {}) {
|
|||
};
|
||||
}
|
||||
|
||||
async function rawQuery(query, params = {}) {
|
||||
async function rawQuery<T>(query, params = {}): Promise<T> {
|
||||
if (process.env.LOG_QUERY) {
|
||||
log('QUERY:\n', query);
|
||||
log('PARAMETERS:\n', params);
|
||||
|
|
@ -158,7 +158,7 @@ async function rawQuery(query, params = {}) {
|
|||
|
||||
await connect();
|
||||
|
||||
return clickhouse.query(query, { params }).toPromise();
|
||||
return clickhouse.query(query, { params }).toPromise() as Promise<T>;
|
||||
}
|
||||
|
||||
async function findUnique(data) {
|
||||
|
|
|
|||
|
|
@ -148,7 +148,8 @@ function getFunnelQuery(
|
|||
const levelNumber = i + 1;
|
||||
const start = i > 0 ? ',' : '';
|
||||
|
||||
pv.levelQuery += `\n
|
||||
if (levelNumber >= 2) {
|
||||
pv.levelQuery += `\n
|
||||
, level${levelNumber} AS (
|
||||
select cl.*,
|
||||
l0.created_at level_${levelNumber}_created_at,
|
||||
|
|
@ -156,13 +157,14 @@ function getFunnelQuery(
|
|||
from level${i} cl
|
||||
left join level0 l0
|
||||
on cl.session_id = l0.session_id
|
||||
and l0.created_at between cl.level_${levelNumber}_created_at
|
||||
and ${getAddMinutesQuery(`cl.level_${levelNumber}_created_at`, windowMinutes)}
|
||||
and l0.created_at between cl.level_${i}_created_at
|
||||
and ${getAddMinutesQuery(`cl.level_${i}_created_at`, windowMinutes)}
|
||||
and l0.referrer_path = $${i + initParamLength}
|
||||
and l0.url_path = $${i + initParamLength}
|
||||
and l0.url_path = $${levelNumber + initParamLength}
|
||||
)`;
|
||||
}
|
||||
|
||||
pv.sumQuery += `\n${start}SUM(CASE WHEN l1_url is not null THEN 1 ELSE 0 END) AS level1`;
|
||||
pv.sumQuery += `\n${start}SUM(CASE WHEN level_${levelNumber}_url is not null THEN 1 ELSE 0 END) AS level${levelNumber}`;
|
||||
|
||||
pv.urlFilterQuery += `\n${start}$${levelNumber + initParamLength} `;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue