nsmcp::AccessRecordStoreSQLite method totals (public)
<instance of nsmcp::AccessRecordStoreSQLite> totals options
Defined in /usr/local/ns/tcl/nsmcp/log-traffic-record-store.tcl
Return stored request totals for the current query scope. Use minute rollups when the scope and filters permit, retaining detailed boundary rows. Otherwise aggregate the scoped records and checkpoint diagnostic counters directly.
- Parameters:
- options (required)
- Normalized time window and request filters.
- Returns:
- A list containing the counts dictionary, selected status counts and coverage diagnostics.
- Testcases:
- No testcase defined.
Source code: lassign [:filters $options] context selected set source [:rollupSource $options] if {$source ne {}} { set counts [dict create requestCount 0 failedRecords 0 selectedRecords 0] set statuses {} # One grouped pass supplies both context and selected totals. foreach row [${:db} execute " SELECT status, sum(n) AS n, sum(CASE WHEN $selected THEN n ELSE 0 END) AS selected FROM ($source) WHERE $context GROUP BY status ORDER BY status "] { set status [dict get $row status] set n [dict get $row n] set selectedCount [dict get $row selected] dict incr counts requestCount $n if {$status>=400} { dict incr counts failedRecords $n } dict incr counts selectedRecords $selectedCount if {$selectedCount>0} { lappend statuses [dict create status $status count $selectedCount] } } set overview [:overview] return [list $counts $statuses [dict create queryStrategy minute-rollups-with-boundaries storedPhysicalRecords [dict get $counts requestCount] parseErrors [dict get $overview malformed] oversizedRecords [dict get $overview oversized] pendingRecords 0]] } set counts [lindex [${:db} execute " SELECT count(*) AS requestCount, coalesce(sum(status>=400), 0) AS failedRecords, coalesce(sum(CASE WHEN $selected THEN 1 ELSE 0 END), 0) AS selectedRecords FROM temp.nsmcp_record_window WHERE $context "] 0] set statuses [${:db} execute " SELECT status, count(*) AS count FROM temp.nsmcp_record_window WHERE $selected GROUP BY status ORDER BY status "] set diagnostics [lindex [${:db} execute { SELECT count(*) AS storedPhysicalRecords, coalesce(sum(kind=1), 0) AS parseErrors, coalesce(sum(kind=2), 0) AS oversizedRecords FROM temp.nsmcp_record_window }] 0] set counters [:checkpointCounts] foreach key {parseErrors oversizedRecords} { dict incr diagnostics $key [dict get $counters $key] } dict set diagnostics diagnosticCountsComplete [dict get $counters diagnosticCountsComplete] dict set diagnostics queryStrategy detailed-rows dict set diagnostics pendingRecords [:boundaryPending] return [list $counts $statuses $diagnostics]XQL Not present: Generic, PostgreSQL, Oracle
![[i]](/resources/acs-subsite/ZoomIn16.gif)