MCPcopy
hub / github.com/umami-software/umami / clickhouseQuery

Function clickhouseQuery

src/queries/sql/getChannelExpandedMetrics.ts:144–222  ·  view source on GitHub ↗
(
  websiteId: string,
  filters: QueryFilters,
)

Source from the content-addressed store, hash-verified

142}
143
144async function clickhouseQuery(
145 websiteId: string,
146 filters: QueryFilters,
147): Promise<ChannelExpandedMetricsData[]> {
148 const { rawQuery, parseFilters } = clickhouse;
149 const { queryParams, filterQuery, cohortQuery, excludeBounceQuery } = parseFilters({
150 ...filters,
151 websiteId,
152 });
153
154 return rawQuery(
155 `
156 select
157 name,
158 sum(t.c) as "pageviews",
159 uniq(t.session_id) as "visitors",
160 uniq(t.visit_id) as "visits",
161 sum(if(t.c = 1, 1, 0)) as "bounces",
162 sum(max_time-min_time) as "totaltime"
163 from (
164 select
165 session_id,
166 visit_id,
167 coalesce(nullIf(argMin(name, tuple(if(name != '', 0, 1), created_at, event_id)), ''), 'direct') as name,
168 count(*) c,
169 min(created_at) min_time,
170 max(created_at) max_time
171 from (
172 select
173 case when multiSearchAny(lower(utm_medium), ['cp', 'ppc', 'retargeting', 'paid']) != 0 then 'paid' else 'organic' end prefix,
174 case
175 when referrer_domain = '' and url_query = '' then 'direct'
176 when multiSearchAny(lower(url_query), [${toClickHouseStringArray(
177 PAID_AD_PARAMS,
178 )}]) != 0 then 'paidAds'
179 when multiSearchAny(lower(utm_medium), ['referral', 'app','link']) != 0 then 'referral'
180 when position(lower(utm_medium), 'affiliate') > 0 then 'affiliate'
181 when position(lower(utm_medium), 'sms') > 0 or position(lower(utm_source), 'sms') > 0 then 'sms'
182 when multiSearchAny(lower(referrer_domain), [${toClickHouseStringArray(
183 LLM_DOMAINS,
184 )}]) != 0 then 'llm'
185 when multiSearchAny(lower(referrer_domain), [${toClickHouseStringArray(
186 SEARCH_DOMAINS,
187 )}]) != 0 or position(lower(utm_medium), 'organic') > 0 then concat(prefix, 'Search')
188 when multiSearchAny(lower(referrer_domain), [${toClickHouseStringArray(
189 SOCIAL_DOMAINS,
190 )}]) != 0 then concat(prefix, 'Social')
191 when multiSearchAny(lower(referrer_domain), [${toClickHouseStringArray(
192 EMAIL_DOMAINS,
193 )}]) != 0 or position(lower(utm_medium), 'mail') > 0 then 'email'
194 when multiSearchAny(lower(referrer_domain), [${toClickHouseStringArray(
195 SHOPPING_DOMAINS,
196 )}]) != 0 or position(lower(utm_medium), 'shop') > 0 then concat(prefix, 'Shopping')
197 when multiSearchAny(lower(referrer_domain), [${toClickHouseStringArray(
198 VIDEO_DOMAINS,
199 )}]) != 0 or position(lower(utm_medium), 'video') > 0 then concat(prefix, 'Video')
200 when referrer_domain != hostname and referrer_domain != '' then 'referral'
201 else '' end AS "name",

Callers 1

Calls 3

toClickHouseStringArrayFunction · 0.70
parseFiltersFunction · 0.50
rawQueryFunction · 0.50

Tested by

no test coverage detected