mirror of
https://github.com/umami-software/umami.git
synced 2025-12-06 01:18:00 +01:00
clean up funnel migration and report errors
This commit is contained in:
parent
1825524e95
commit
f3125c2add
4 changed files with 31 additions and 11 deletions
|
|
@ -72,8 +72,29 @@ CREATE INDEX "pixel_team_id_idx" ON "pixel"("team_id");
|
||||||
-- CreateIndex
|
-- CreateIndex
|
||||||
CREATE INDEX "pixel_created_at_idx" ON "pixel"("created_at");
|
CREATE INDEX "pixel_created_at_idx" ON "pixel"("created_at");
|
||||||
|
|
||||||
-- DataMigration
|
-- DataMigration Funnel
|
||||||
UPDATE "report" SET parameters = parameters - 'websiteId' - 'dateRange' WHERE type = 'funnel';
|
DELETE FROM "report" WHERE type = 'funnel' and jsonb_array_length(parameters->'steps') = 1;
|
||||||
|
UPDATE "report" SET parameters = parameters - 'websiteId' - 'dateRange' - 'urls' WHERE type = 'funnel';
|
||||||
|
|
||||||
|
UPDATE "report"
|
||||||
|
SET parameters = jsonb_set(
|
||||||
|
parameters,
|
||||||
|
'{steps}',
|
||||||
|
(
|
||||||
|
SELECT jsonb_agg(
|
||||||
|
CASE
|
||||||
|
WHEN step->>'type' = 'url'
|
||||||
|
THEN jsonb_set(step, '{type}', '"path"')
|
||||||
|
ELSE step
|
||||||
|
END
|
||||||
|
)
|
||||||
|
FROM jsonb_array_elements(parameters->'steps') step
|
||||||
|
)
|
||||||
|
)
|
||||||
|
WHERE type = 'funnel'
|
||||||
|
and parameters @> '{"steps":[{"type":"url"}]}';
|
||||||
|
|
||||||
|
-- DataMigration Goals
|
||||||
UPDATE "report" SET type = 'goal' WHERE type = 'goals';
|
UPDATE "report" SET type = 'goal' WHERE type = 'goals';
|
||||||
|
|
||||||
INSERT INTO "report" (report_id, user_id, website_id, type, name, description, parameters, created_at, updated_at)
|
INSERT INTO "report" (report_id, user_id, website_id, type, name, description, parameters, created_at, updated_at)
|
||||||
|
|
@ -92,7 +113,7 @@ SELECT gen_random_uuid(),
|
||||||
updated_at
|
updated_at
|
||||||
FROM "report"
|
FROM "report"
|
||||||
CROSS JOIN LATERAL jsonb_array_elements(parameters -> 'goals') elem
|
CROSS JOIN LATERAL jsonb_array_elements(parameters -> 'goals') elem
|
||||||
WHERE elem ->> 'type' IN ('event', 'url')
|
WHERE type = 'goal'
|
||||||
and type = 'goal';
|
and elem ->> 'type' IN ('event', 'url');
|
||||||
|
|
||||||
DELETE FROM "report" WHERE parameters ? 'goals' and type = 'goal';
|
DELETE FROM "report" WHERE type = 'goal' and parameters ? 'goals';
|
||||||
|
|
@ -32,14 +32,13 @@ async function relationalQuery(
|
||||||
): Promise<FunnelResult[]> {
|
): Promise<FunnelResult[]> {
|
||||||
const { startDate, endDate, window, steps } = parameters;
|
const { startDate, endDate, window, steps } = parameters;
|
||||||
const { rawQuery, getAddIntervalQuery, parseFilters } = prisma;
|
const { rawQuery, getAddIntervalQuery, parseFilters } = prisma;
|
||||||
const { levelOneQuery, levelQuery, sumQuery, params } = getFunnelQuery(steps, window);
|
|
||||||
|
|
||||||
const { filterQuery, joinSessionQuery, cohortQuery, queryParams } = parseFilters({
|
const { filterQuery, joinSessionQuery, cohortQuery, queryParams } = parseFilters({
|
||||||
...filters,
|
...filters,
|
||||||
websiteId,
|
websiteId,
|
||||||
startDate,
|
startDate,
|
||||||
endDate,
|
endDate,
|
||||||
});
|
});
|
||||||
|
const { levelOneQuery, levelQuery, sumQuery, params } = getFunnelQuery(steps, window);
|
||||||
|
|
||||||
function getFunnelQuery(
|
function getFunnelQuery(
|
||||||
steps: { type: string; value: string }[],
|
steps: { type: string; value: string }[],
|
||||||
|
|
|
||||||
|
|
@ -48,15 +48,15 @@ async function relationalQuery(
|
||||||
from website_event
|
from website_event
|
||||||
${cohortQuery}
|
${cohortQuery}
|
||||||
${joinSessionQuery}
|
${joinSessionQuery}
|
||||||
where website_id = {websiteId:UUID}
|
where website_id = {{websiteId::uuid}}
|
||||||
${dateQuery}
|
${dateQuery}
|
||||||
${filterQuery}
|
${filterQuery}
|
||||||
) as total
|
) as total
|
||||||
from website_event
|
from website_event
|
||||||
${cohortQuery}
|
${cohortQuery}
|
||||||
${joinSessionQuery}
|
${joinSessionQuery}
|
||||||
where website_id = {websiteId:UUID}
|
where website_id = {{websiteId::uuid}}
|
||||||
and ${column} = {value:String}
|
and ${column} = {{value}}
|
||||||
${dateQuery}
|
${dateQuery}
|
||||||
${filterQuery}
|
${filterQuery}
|
||||||
`,
|
`,
|
||||||
|
|
|
||||||
|
|
@ -75,7 +75,7 @@ async function relationalQuery(
|
||||||
`
|
`
|
||||||
select
|
select
|
||||||
session.country as name,
|
session.country as name,
|
||||||
sum(r.revenue) value
|
sum(revenue) value
|
||||||
from revenue
|
from revenue
|
||||||
join website_event
|
join website_event
|
||||||
on website_event.website_id = revenue.website_id
|
on website_event.website_id = revenue.website_id
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue