fix clickhouse calls (#1536)

This commit is contained in:
Brian Cao 2022-09-23 22:43:51 -07:00 committed by GitHub
parent dfac7e1af5
commit 78c3453639
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 41 additions and 34 deletions

3
.gitignore vendored
View File

@ -38,6 +38,3 @@ yarn-error.log*
*.dev.yml *.dev.yml
# cert
/lib/cert

View File

@ -27,8 +27,8 @@ export default async (req, res) => {
const [pageviews, sessions] = await Promise.all([ const [pageviews, sessions] = await Promise.all([
getPageviewStats(websiteId, { getPageviewStats(websiteId, {
startDate, start_at: startDate,
endDate, end_at: endDate,
tz, tz,
unit, unit,
count: '*', count: '*',
@ -42,8 +42,8 @@ export default async (req, res) => {
}, },
}), }),
getPageviewStats(websiteId, { getPageviewStats(websiteId, {
startDate, start_at: startDate,
endDate, end_at: endDate,
tz, tz,
unit, unit,
count: 'distinct pageview.', count: 'distinct pageview.',

View File

@ -21,21 +21,29 @@ export default async (req, res) => {
const prevStartDate = new Date(+start_at - distance); const prevStartDate = new Date(+start_at - distance);
const prevEndDate = new Date(+end_at - distance); const prevEndDate = new Date(+end_at - distance);
const metrics = await getWebsiteStats(websiteId, startDate, endDate, { const metrics = await getWebsiteStats(websiteId, {
start_at: startDate,
end_at: endDate,
filters: {
url, url,
referrer, referrer,
os, os,
browser, browser,
device, device,
country, country,
},
}); });
const prevPeriod = await getWebsiteStats(websiteId, prevStartDate, prevEndDate, { const prevPeriod = await getWebsiteStats(websiteId, {
start_at: prevStartDate,
end_at: prevEndDate,
filters: {
url, url,
referrer, referrer,
os, os,
browser, browser,
device, device,
country, country,
},
}); });
const stats = Object.keys(metrics[0]).reduce((obj, key) => { const stats = Object.keys(metrics[0]).reduce((obj, key) => {

View File

@ -52,7 +52,8 @@ async function clickhouseQuery(
${getDateQuery('created_at', unit, timezone)} t, ${getDateQuery('created_at', unit, timezone)} t,
count(*) y count(*) y
from event from event
where website_id= $1 where event_name != ''
and website_id= $1
and ${getBetweenDates('created_at', start_at, end_at)} and ${getBetweenDates('created_at', start_at, end_at)}
${getFilterQuery('event', filters, params)} ${getFilterQuery('event', filters, params)}
group by x, t group by x, t

View File

@ -31,12 +31,13 @@ function clickhouseQuery(websites, start_at) {
`select `select
event_uuid, event_uuid,
website_id, website_id,
session_id, session_uuid,
created_at, created_at,
url, url,
event_name event_name
from event from event
where website_id in (${websites.join[',']} where event_name != ''
and created_at >= ${getDateFormat(start_at)})`, and ${websites && websites.length > 0 ? `website_id in (${websites.join(',')})` : '0 = 0'}
and created_at >= ${getDateFormat(start_at)}`,
); );
} }

View File

@ -43,7 +43,7 @@ async function clickhouseQuery(website_id, { startDate, endDate, column, filters
`select ${column} x, count(*) y `select ${column} x, count(*) y
from event from event
where website_id= $1 where website_id= $1
${column !== 'event_name' ? `and event_name = ''` : ''} ${column !== 'event_name' ? `and event_name = ''` : `and event_name != ''`}
and ${getBetweenDates('created_at', startDate, endDate)} and ${getBetweenDates('created_at', startDate, endDate)}
${pageviewQuery} ${pageviewQuery}
${sessionQuery} ${sessionQuery}

View File

@ -59,10 +59,10 @@ async function clickhouseQuery(
from from
(select (select
${getDateQuery('created_at', unit, timezone)} t, ${getDateQuery('created_at', unit, timezone)} t,
count(${count !== '*' ? 'session_uuid' : count}) y count(${count !== '*' ? 'distinct session_uuid' : count}) y
from event from event
where website_id= $1 where event_name = ''
and website_id= $1
and ${getBetweenDates('created_at', start_at, end_at)} and ${getBetweenDates('created_at', start_at, end_at)}
${pageviewQuery} ${pageviewQuery}
${sessionQuery} ${sessionQuery}

View File

@ -33,7 +33,7 @@ async function clickhouseQuery(websites, start_at) {
url url
from event from event
where event_name = '' where event_name = ''
and website_id in (${websites.join[',']} and ${websites && websites.length > 0 ? `website_id in (${websites.join(',')})` : '0 = 0'}
and created_at >= ${clickhouse.getDateFormat(start_at)})`, and created_at >= ${clickhouse.getDateFormat(start_at)}`,
); );
} }

View File

@ -44,7 +44,7 @@ async function clickhouseQuery(websites, start_at) {
language, language,
country country
from event from event
where ${websites && websites.length > 0 ? `(website_id in (${websites.join[',']})` : '0 = 0'} where ${websites && websites.length > 0 ? `website_id in (${websites.join(',')})` : '0 = 0'}
and created_at >= ${getDateFormat(start_at)}`, and created_at >= ${getDateFormat(start_at)}`,
); );
} }

View File

@ -9,7 +9,7 @@ export async function getWebsiteStats(...args) {
}); });
} }
async function relationalQuery(website_id, start_at, end_at, filters = {}) { async function relationalQuery(website_id, { start_at, end_at, filters = {} }) {
const { getDateQuery, getTimestampInterval, parseFilters, rawQuery } = prisma; const { getDateQuery, getTimestampInterval, parseFilters, rawQuery } = prisma;
const params = [website_id, start_at, end_at]; const params = [website_id, start_at, end_at];
const { pageviewQuery, sessionQuery, joinSession } = parseFilters( const { pageviewQuery, sessionQuery, joinSession } = parseFilters(
@ -41,7 +41,7 @@ async function relationalQuery(website_id, start_at, end_at, filters = {}) {
); );
} }
async function clickhouseQuery(website_id, start_at, end_at, filters = {}) { async function clickhouseQuery(website_id, { start_at, end_at, filters = {} }) {
const { rawQuery, getDateQuery, getBetweenDates, parseFilters } = clickhouse; const { rawQuery, getDateQuery, getBetweenDates, parseFilters } = clickhouse;
const params = [website_id]; const params = [website_id];
const { pageviewQuery, sessionQuery } = parseFilters(null, filters, params); const { pageviewQuery, sessionQuery } = parseFilters(null, filters, params);