transformLogsToChartData() — supabase Function Reference
Architecture documentation for the transformLogsToChartData() function in WithMonitor.utils.ts from the supabase codebase.
Entity Profile
Dependency Diagram
graph TD feb777f2_18e6_9259_8223_be4c3687a513["transformLogsToChartData()"] 8afea200_94fd_d6c2_5605_0880960a2b8b["WithMonitor()"] 8afea200_94fd_d6c2_5605_0880960a2b8b -->|calls| feb777f2_18e6_9259_8223_be4c3687a513 b1259752_04bc_1519_0b13_de719e165b16["calculatePercentilesFromHistogram()"] feb777f2_18e6_9259_8223_be4c3687a513 -->|calls| b1259752_04bc_1519_0b13_de719e165b16 style feb777f2_18e6_9259_8223_be4c3687a513 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
apps/studio/components/interfaces/QueryPerformance/WithMonitor/WithMonitor.utils.ts lines 66–124
export const transformLogsToChartData = (parsedLogs: ParsedLogEntry[]): ChartDataPoint[] => {
if (!parsedLogs || parsedLogs.length === 0) return []
// [kemal]: here for debugging
// if (parsedLogs.length > 0) {
// console.log('🟡 Parsed logs:', parsedLogs)
// }
return parsedLogs
.map((log: ParsedLogEntry) => {
const possibleTimestamps = [log.bucket_start_time, log.bucket, log.timestamp, log.ts]
let periodStart: number | null = null
for (const ts of possibleTimestamps) {
if (ts) {
const date = new Date(ts)
const time = date.getTime()
if (!isNaN(time) && time > 0 && time > 946684800000) {
periodStart = time
break
}
}
}
if (!periodStart) {
return null
}
const percentiles =
log.resp_calls && Array.isArray(log.resp_calls)
? calculatePercentilesFromHistogram(log.resp_calls)
: { p50: 0, p95: 0 }
return {
period_start: periodStart,
timestamp: possibleTimestamps.find((t) => t) || '',
query_latency: parseFloat(
String(log.mean_time ?? log.mean_exec_time ?? log.mean_query_time ?? 0)
),
mean_time: parseFloat(
String(log.mean_time ?? log.mean_exec_time ?? log.mean_query_time ?? 0)
),
min_time: parseFloat(String(log.min_time ?? log.min_exec_time ?? log.min_query_time ?? 0)),
max_time: parseFloat(String(log.max_time ?? log.max_exec_time ?? log.max_query_time ?? 0)),
stddev_time: parseFloat(
String(log.stddev_time ?? log.stddev_exec_time ?? log.stddev_query_time ?? 0)
),
p50_time: percentiles.p50,
p95_time: percentiles.p95,
rows_read: parseInt(String(log.rows ?? 0), 10),
calls: parseInt(String(log.calls ?? 0), 10),
cache_hits: parseFloat(String(log.shared_blks_hit ?? 0)),
cache_misses: parseFloat(String(log.shared_blks_read ?? 0)),
}
})
.filter((item): item is NonNullable<typeof item> => item !== null)
.sort((a, b) => a.period_start - b.period_start)
}
Domain
Subdomains
Called By
Source
Frequently Asked Questions
What does transformLogsToChartData() do?
transformLogsToChartData() is a function in the supabase codebase.
What does transformLogsToChartData() call?
transformLogsToChartData() calls 1 function(s): calculatePercentilesFromHistogram.
What calls transformLogsToChartData()?
transformLogsToChartData() is called by 1 function(s): WithMonitor.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free