@@ -3,165 +3,185 @@ import type { SimpleQueryConfig } from "../types";
33
44export const PerformanceBuilders : Record < string , SimpleQueryConfig > = {
55 performance_metrics : {
6- table : Analytics . web_vitals ,
6+ table : Analytics . events ,
77 fields : [
8- 'AVG(fcp) as avg_fcp' ,
9- 'AVG(lcp) as avg_lcp' ,
10- 'AVG(cls) as avg_cls' ,
11- 'AVG(fid) as avg_fid' ,
12- 'AVG(inp) as avg_inp' ,
8+ 'AVG(CASE WHEN load_time > 0 THEN load_time ELSE NULL END) as avg_load_time' ,
9+ 'AVG(CASE WHEN dom_ready_time > 0 THEN dom_ready_time ELSE NULL END) as avg_dom_ready_time' ,
10+ 'AVG(CASE WHEN ttfb > 0 THEN ttfb ELSE NULL END) as avg_ttfb' ,
11+ 'AVG(CASE WHEN render_time > 0 THEN render_time ELSE NULL END) as avg_render_time' ,
12+ 'AVG(CASE WHEN fcp > 0 THEN fcp ELSE NULL END) as avg_fcp' ,
13+ 'AVG(CASE WHEN lcp > 0 THEN lcp ELSE NULL END) as avg_lcp' ,
14+ 'AVG(CASE WHEN cls >= 0 THEN cls ELSE NULL END) as avg_cls' ,
1315 'COUNT(*) as total_events'
1416 ] ,
15- where : [ ] ,
16- timeField : 'timestamp ' ,
17- allowedFilters : [ 'path' , 'device_type' , 'browser_name' , 'country' , 'region' , 'os_name' ] ,
17+ where : [ 'event_name = \'screen_view\'' ] ,
18+ timeField : 'time ' ,
19+ allowedFilters : [ 'path' , 'device_type' , 'browser_name' , 'country' ] ,
1820 customizable : true
1921 } ,
2022
2123 slow_pages : {
22- table : Analytics . web_vitals ,
24+ table : Analytics . events ,
2325 fields : [
24- 'path as name' ,
26+ 'path(path) as name' ,
2527 'COUNT(DISTINCT anonymous_id) as visitors' ,
26- 'AVG(fcp) as avg_fcp' ,
27- 'AVG(lcp) as avg_lcp' ,
28- 'AVG(cls) as avg_cls' ,
29- 'AVG(fid) as avg_fid' ,
30- 'AVG(inp) as avg_inp' ,
28+ 'AVG(CASE WHEN load_time > 0 THEN load_time ELSE NULL END) as avg_load_time' ,
29+ 'AVG(CASE WHEN ttfb > 0 THEN ttfb ELSE NULL END) as avg_ttfb' ,
30+ 'AVG(CASE WHEN dom_ready_time > 0 THEN dom_ready_time ELSE NULL END) as avg_dom_ready_time' ,
31+ 'AVG(CASE WHEN render_time > 0 THEN render_time ELSE NULL END) as avg_render_time' ,
32+ 'AVG(CASE WHEN fcp > 0 THEN fcp ELSE NULL END) as avg_fcp' ,
33+ 'AVG(CASE WHEN lcp > 0 THEN lcp ELSE NULL END) as avg_lcp' ,
34+ 'AVG(CASE WHEN cls >= 0 THEN cls ELSE NULL END) as avg_cls' ,
3135 'COUNT(*) as pageviews'
3236 ] ,
33- where : [ " path != ''" ] ,
34- groupBy : [ 'path' ] ,
35- orderBy : 'avg_lcp DESC' ,
37+ where : [ 'event_name = \'screen_view\'' , ' path != \'\'' , 'load_time > 0' ] ,
38+ groupBy : [ 'path(path) ' ] ,
39+ orderBy : 'avg_load_time DESC' ,
3640 limit : 100 ,
37- timeField : 'timestamp ' ,
41+ timeField : 'time ' ,
3842 allowedFilters : [ 'path' , 'device_type' , 'browser_name' ] ,
3943 customizable : true
4044 } ,
4145
4246 performance_by_device : {
43- table : Analytics . web_vitals ,
47+ table : Analytics . events ,
4448 fields : [
4549 'device_type as name' ,
4650 'COUNT(DISTINCT anonymous_id) as visitors' ,
47- 'AVG(fcp) as avg_fcp' ,
48- 'AVG(lcp) as avg_lcp' ,
49- 'AVG(cls) as avg_cls' ,
50- 'AVG(fid) as avg_fid' ,
51- 'AVG(inp) as avg_inp' ,
51+ 'AVG(CASE WHEN load_time > 0 THEN load_time ELSE NULL END) as avg_load_time' ,
52+ 'AVG(CASE WHEN ttfb > 0 THEN ttfb ELSE NULL END) as avg_ttfb' ,
53+ 'AVG(CASE WHEN dom_ready_time > 0 THEN dom_ready_time ELSE NULL END) as avg_dom_ready_time' ,
54+ 'AVG(CASE WHEN render_time > 0 THEN render_time ELSE NULL END) as avg_render_time' ,
55+ 'AVG(CASE WHEN fcp > 0 THEN fcp ELSE NULL END) as avg_fcp' ,
56+ 'AVG(CASE WHEN lcp > 0 THEN lcp ELSE NULL END) as avg_lcp' ,
57+ 'AVG(CASE WHEN cls >= 0 THEN cls ELSE NULL END) as avg_cls' ,
5258 'COUNT(*) as pageviews'
5359 ] ,
54- where : [ " device_type != ''" ] ,
60+ where : [ 'event_name = \'screen_view\'' , ' device_type != \'\'' , 'load_time > 0' ] ,
5561 groupBy : [ 'device_type' ] ,
56- orderBy : 'avg_lcp DESC' ,
62+ orderBy : 'avg_load_time DESC' ,
5763 limit : 100 ,
58- timeField : 'timestamp ' ,
64+ timeField : 'time ' ,
5965 allowedFilters : [ 'path' , 'device_type' , 'browser_name' ] ,
6066 customizable : true
6167 } ,
6268
6369 performance_by_browser : {
64- table : Analytics . web_vitals ,
70+ table : Analytics . events ,
6571 fields : [
66- " CONCAT(browser_name, ' ', browser_version) as name" ,
72+ ' CONCAT(browser_name, \' \ ', browser_version) as name' ,
6773 'COUNT(DISTINCT anonymous_id) as visitors' ,
68- 'AVG(fcp) as avg_fcp' ,
69- 'AVG(lcp) as avg_lcp' ,
70- 'AVG(cls) as avg_cls' ,
71- 'AVG(fid) as avg_fid' ,
72- 'AVG(inp) as avg_inp' ,
74+ 'AVG(CASE WHEN load_time > 0 THEN load_time ELSE NULL END) as avg_load_time' ,
75+ 'AVG(CASE WHEN ttfb > 0 THEN ttfb ELSE NULL END) as avg_ttfb' ,
76+ 'AVG(CASE WHEN dom_ready_time > 0 THEN dom_ready_time ELSE NULL END) as avg_dom_ready_time' ,
77+ 'AVG(CASE WHEN render_time > 0 THEN render_time ELSE NULL END) as avg_render_time' ,
78+ 'AVG(CASE WHEN fcp > 0 THEN fcp ELSE NULL END) as avg_fcp' ,
79+ 'AVG(CASE WHEN lcp > 0 THEN lcp ELSE NULL END) as avg_lcp' ,
80+ 'AVG(CASE WHEN cls >= 0 THEN cls ELSE NULL END) as avg_cls' ,
7381 'COUNT(*) as pageviews'
7482 ] ,
7583 where : [
76- "browser_name != ''" ,
77- "browser_version != ''" ,
78- 'browser_version IS NOT NULL'
84+ 'event_name = \'screen_view\'' ,
85+ 'browser_name != \'\'' ,
86+ 'browser_version != \'\'' ,
87+ 'browser_version IS NOT NULL' ,
88+ 'load_time > 0'
7989 ] ,
8090 groupBy : [ 'browser_name' , 'browser_version' ] ,
81- orderBy : 'avg_lcp DESC' ,
91+ orderBy : 'avg_load_time DESC' ,
8292 limit : 100 ,
83- timeField : 'timestamp ' ,
93+ timeField : 'time ' ,
8494 allowedFilters : [ 'path' , 'device_type' , 'browser_name' ] ,
8595 customizable : true
8696 } ,
8797
8898 performance_by_country : {
89- table : Analytics . web_vitals ,
99+ table : Analytics . events ,
90100 fields : [
91101 'country as name' ,
92102 'COUNT(DISTINCT anonymous_id) as visitors' ,
93- 'AVG(fcp) as avg_fcp' ,
94- 'AVG(lcp) as avg_lcp' ,
95- 'AVG(cls) as avg_cls' ,
96- 'AVG(fid) as avg_fid' ,
97- 'AVG(inp) as avg_inp' ,
103+ 'AVG(CASE WHEN load_time > 0 THEN load_time ELSE NULL END) as avg_load_time' ,
104+ 'AVG(CASE WHEN ttfb > 0 THEN ttfb ELSE NULL END) as avg_ttfb' ,
105+ 'AVG(CASE WHEN dom_ready_time > 0 THEN dom_ready_time ELSE NULL END) as avg_dom_ready_time' ,
106+ 'AVG(CASE WHEN render_time > 0 THEN render_time ELSE NULL END) as avg_render_time' ,
107+ 'AVG(CASE WHEN fcp > 0 THEN fcp ELSE NULL END) as avg_fcp' ,
108+ 'AVG(CASE WHEN lcp > 0 THEN lcp ELSE NULL END) as avg_lcp' ,
109+ 'AVG(CASE WHEN cls >= 0 THEN cls ELSE NULL END) as avg_cls' ,
98110 'COUNT(*) as pageviews'
99111 ] ,
100- where : [ " country != ''" ] ,
112+ where : [ 'event_name = \'screen_view\'' , ' country != \'\'' , 'load_time > 0' ] ,
101113 groupBy : [ 'country' ] ,
102- orderBy : 'avg_lcp DESC' ,
114+ orderBy : 'avg_load_time DESC' ,
103115 limit : 100 ,
104- timeField : 'timestamp ' ,
116+ timeField : 'time ' ,
105117 allowedFilters : [ 'path' , 'device_type' , 'browser_name' ] ,
106- customizable : true
118+ customizable : true ,
119+ plugins : { normalizeGeo : true , deduplicateGeo : true }
107120 } ,
108121
109122 performance_by_os : {
110- table : Analytics . web_vitals ,
123+ table : Analytics . events ,
111124 fields : [
112125 'os_name as name' ,
113126 'COUNT(DISTINCT anonymous_id) as visitors' ,
114- 'AVG(fcp) as avg_fcp' ,
115- 'AVG(lcp) as avg_lcp' ,
116- 'AVG(cls) as avg_cls' ,
117- 'AVG(fid) as avg_fid' ,
118- 'AVG(inp) as avg_inp' ,
127+ 'AVG(CASE WHEN load_time > 0 THEN load_time ELSE NULL END) as avg_load_time' ,
128+ 'AVG(CASE WHEN ttfb > 0 THEN ttfb ELSE NULL END) as avg_ttfb' ,
129+ 'AVG(CASE WHEN dom_ready_time > 0 THEN dom_ready_time ELSE NULL END) as avg_dom_ready_time' ,
130+ 'AVG(CASE WHEN render_time > 0 THEN render_time ELSE NULL END) as avg_render_time' ,
131+ 'AVG(CASE WHEN fcp > 0 THEN fcp ELSE NULL END) as avg_fcp' ,
132+ 'AVG(CASE WHEN lcp > 0 THEN lcp ELSE NULL END) as avg_lcp' ,
133+ 'AVG(CASE WHEN cls >= 0 THEN cls ELSE NULL END) as avg_cls' ,
119134 'COUNT(*) as pageviews'
120135 ] ,
121- where : [ " os_name != ''" ] ,
136+ where : [ 'event_name = \'screen_view\'' , ' os_name != \'\'' , 'load_time > 0' ] ,
122137 groupBy : [ 'os_name' ] ,
123- orderBy : 'avg_lcp DESC' ,
138+ orderBy : 'avg_load_time DESC' ,
124139 limit : 100 ,
125- timeField : 'timestamp ' ,
140+ timeField : 'time ' ,
126141 allowedFilters : [ 'path' , 'device_type' , 'browser_name' ] ,
127142 customizable : true
128143 } ,
129144
130145 performance_by_region : {
131- table : Analytics . web_vitals ,
146+ table : Analytics . events ,
132147 fields : [
133- " CONCAT(region, ', ', country) as name" ,
148+ ' CONCAT(region, \ ', \ ', country) as name' ,
134149 'COUNT(DISTINCT anonymous_id) as visitors' ,
135- 'AVG(fcp) as avg_fcp' ,
136- 'AVG(lcp) as avg_lcp' ,
137- 'AVG(cls) as avg_cls' ,
138- 'AVG(fid) as avg_fid' ,
139- 'AVG(inp) as avg_inp' ,
150+ 'AVG(CASE WHEN load_time > 0 THEN load_time ELSE NULL END) as avg_load_time' ,
151+ 'AVG(CASE WHEN ttfb > 0 THEN ttfb ELSE NULL END) as avg_ttfb' ,
152+ 'AVG(CASE WHEN dom_ready_time > 0 THEN dom_ready_time ELSE NULL END) as avg_dom_ready_time' ,
153+ 'AVG(CASE WHEN render_time > 0 THEN render_time ELSE NULL END) as avg_render_time' ,
154+ 'AVG(CASE WHEN fcp > 0 THEN fcp ELSE NULL END) as avg_fcp' ,
155+ 'AVG(CASE WHEN lcp > 0 THEN lcp ELSE NULL END) as avg_lcp' ,
156+ 'AVG(CASE WHEN cls >= 0 THEN cls ELSE NULL END) as avg_cls' ,
140157 'COUNT(*) as pageviews'
141158 ] ,
142- where : [ " region != ''" ] ,
159+ where : [ 'event_name = \'screen_view\'' , ' region != \'\'' , 'load_time > 0' ] ,
143160 groupBy : [ 'region' , 'country' ] ,
144- orderBy : 'avg_lcp DESC' ,
161+ orderBy : 'avg_load_time DESC' ,
145162 limit : 100 ,
146- timeField : 'timestamp ' ,
163+ timeField : 'time ' ,
147164 allowedFilters : [ 'path' , 'device_type' , 'browser_name' ] ,
148165 customizable : true
149166 } ,
150167
151168 performance_time_series : {
152- table : Analytics . web_vitals ,
169+ table : Analytics . events ,
153170 fields : [
154- 'toDate(timestamp) as date' ,
155- 'AVG(fcp) as avg_fcp' ,
156- 'AVG(lcp) as avg_lcp' ,
157- 'AVG(cls) as avg_cls' ,
158- 'AVG(fid) as avg_fid' ,
159- 'AVG(inp) as avg_inp' ,
171+ 'toDate(time) as date' ,
172+ 'AVG(CASE WHEN load_time > 0 THEN load_time ELSE NULL END) as avg_load_time' ,
173+ 'AVG(CASE WHEN ttfb > 0 THEN ttfb ELSE NULL END) as avg_ttfb' ,
174+ 'AVG(CASE WHEN dom_ready_time > 0 THEN dom_ready_time ELSE NULL END) as avg_dom_ready_time' ,
175+ 'AVG(CASE WHEN render_time > 0 THEN render_time ELSE NULL END) as avg_render_time' ,
176+ 'AVG(CASE WHEN fcp > 0 THEN fcp ELSE NULL END) as avg_fcp' ,
177+ 'AVG(CASE WHEN lcp > 0 THEN lcp ELSE NULL END) as avg_lcp' ,
178+ 'AVG(CASE WHEN cls >= 0 THEN cls ELSE NULL END) as avg_cls' ,
160179 'COUNT(*) as pageviews'
161180 ] ,
162- groupBy : [ 'toDate(timestamp)' ] ,
181+ where : [ 'event_name = \'screen_view\'' ] ,
182+ groupBy : [ 'toDate(time)' ] ,
163183 orderBy : 'date ASC' ,
164- timeField : 'timestamp ' ,
184+ timeField : 'time ' ,
165185 allowedFilters : [ 'path' , 'device_type' , 'browser_name' ] ,
166186 customizable : true
167187 }
0 commit comments