@@ -100,15 +100,76 @@ export const ErrorsBuilders: Record<string, SimpleQueryConfig> = {
100100 } ,
101101
102102 error_summary : {
103- table : Analytics . errors ,
104- fields : [
105- 'COUNT(*) as totalErrors' ,
106- 'uniq(message) as uniqueErrorTypes' ,
107- 'uniq(anonymous_id) as affectedUsers' ,
108- 'uniq(session_id) as affectedSessions' ,
109- '0 as errorRate' ,
110- ] ,
111- where : [ "message != ''" ] ,
103+ meta : {
104+ title : 'Error Summary' ,
105+ description : 'Overview of errors with calculated error rate' ,
106+ version : '1.0' ,
107+ } ,
108+ customSql : (
109+ websiteId : string ,
110+ startDate : string ,
111+ endDate : string ,
112+ _filters ?: unknown [ ] ,
113+ _granularity ?: unknown ,
114+ _limit ?: number ,
115+ _offset ?: number ,
116+ _timezone ?: string ,
117+ filterConditions ?: string [ ] ,
118+ filterParams ?: Record < string , unknown >
119+ ) => {
120+ const combinedWhereClause = filterConditions ?. length
121+ ? `AND ${ filterConditions . join ( ' AND ' ) } `
122+ : '' ;
123+
124+ return {
125+ sql : `
126+ WITH total_sessions AS (
127+ SELECT uniq(session_id) as total
128+ FROM analytics.events
129+ WHERE client_id = {websiteId:String}
130+ AND time >= parseDateTimeBestEffort({startDate:String})
131+ AND time <= parseDateTimeBestEffort(concat({endDate:String}, ' 23:59:59'))
132+ ),
133+ error_sessions AS (
134+ SELECT uniq(session_id) as error_count
135+ FROM analytics.errors
136+ WHERE client_id = {websiteId:String}
137+ AND timestamp >= parseDateTimeBestEffort({startDate:String})
138+ AND timestamp <= parseDateTimeBestEffort(concat({endDate:String}, ' 23:59:59'))
139+ AND message != ''
140+ ${ combinedWhereClause }
141+ ),
142+ error_stats AS (
143+ SELECT
144+ COUNT(*) as totalErrors,
145+ uniq(message) as uniqueErrorTypes,
146+ uniq(anonymous_id) as affectedUsers,
147+ uniq(session_id) as affectedSessions
148+ FROM analytics.errors
149+ WHERE client_id = {websiteId:String}
150+ AND timestamp >= parseDateTimeBestEffort({startDate:String})
151+ AND timestamp <= parseDateTimeBestEffort(concat({endDate:String}, ' 23:59:59'))
152+ AND message != ''
153+ ${ combinedWhereClause }
154+ )
155+ SELECT
156+ es.totalErrors,
157+ es.uniqueErrorTypes,
158+ es.affectedUsers,
159+ es.affectedSessions,
160+ ROUND((err.error_count / ts.total) * 100, 2) as errorRate
161+ FROM error_stats es
162+ CROSS JOIN total_sessions ts
163+ CROSS JOIN error_sessions err
164+ ` ,
165+ params : {
166+ websiteId,
167+ startDate,
168+ endDate,
169+ ...filterParams ,
170+ } ,
171+ } ;
172+ } ,
112173 timeField : 'timestamp' ,
113174 allowedFilters : [ 'message' , 'path' , 'browser_name' , 'country' ] ,
114175 customizable : true ,
0 commit comments