Home / Function/ transformLogsToChartData() — supabase Function Reference

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)
}

Subdomains

Called By

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