nsmcp::AccessCardinalityStore method results (public)

 <instance of nsmcp::AccessCardinalityStore[i]> results limit \
    expectedPeers expectedAgents

Defined in /usr/local/ns/tcl/nsmcp/log-traffic-aggregate.tcl

Parameters:
limit (required)
expectedPeers (required)
expectedAgents (required)

Testcases:
No testcase defined.
Source code:
:flush
set result [dict create backend sqlite status [dict get ${:data} status] reason [dict get ${:data} reason]  maxBytes [dict get ${:data} maxBytes] diskBytes [:diskBytes] peakBufferedKeys [expr {[dict exists ${:data} peakBufferedKeys] ? [dict get ${:data} peakBufferedKeys] : 0}] peerOmitted [dict get ${:data} peerOmitted] agentOmitted [dict get ${:data} agentOmitted]  labelTruncatedRecords [dict get ${:data} labelTruncatedRecords] labelRedactedRecords [dict get ${:data} labelRedactedRecords]]
foreach {field kind} {peers 0 agents 1} {
    set rows {}; set totals [dict create distinct 0 records 0 top1 0 top10 0 top100 0 rankedRecords 0 clippedRecords 0 redactedRecords 0]
    if {${:db} ne "" && [catch {
        ${:db} execute "SELECT count(*) AS distinctCount,coalesce(sum(n),0) AS records,coalesce(sum(n*clipped),0) AS clippedRecords,coalesce(sum(n*redacted),0) AS redactedRecords FROM nsmcp_access_aggregate.counts WHERE kind=$kind" r {
            dict set totals distinct $r(distinctCount); dict set totals records $r(records)
            dict set totals clippedRecords $r(clippedRecords); dict set totals redactedRecords $r(redactedRecords)
        }
        set i 0
        ${:db} execute "SELECT label,clipped,redacted,n FROM nsmcp_access_aggregate.counts WHERE kind=$kind ORDER BY n DESC,k LIMIT 100" r {
            incr i
            if {$i==1} {dict set totals top1 $r(n)}
            if {$i<=10} {dict incr totals top10 $r(n)}
            dict incr totals top100 $r(n)
            if {$i<=$limit} {
                dict incr totals rankedRecords $r(n)
                lappend rows [dict create value $r(label) count $r(n) valueTruncated $r(clipped) valueRedacted $r(redacted)]
            }
        }
    }]} {
        dict set result status unavailable; dict set result reason sqlite-read-failed
        set rows {}; set totals {distinct 0 records 0 top1 0 top10 0 top100 0 rankedRecords 0 clippedRecords 0 redactedRecords 0}
        :disconnect true
    }
    dict set result $field $rows; dict set result ${field}Totals $totals
}
dict set result labelTruncatedRecords [dict get $result agentsTotals clippedRecords]
dict set result labelRedactedRecords [dict get $result agentsTotals redactedRecords]
if {[dict get $result peersTotals records]+[dict get $result peerOmitted]!=$expectedPeers
    || [dict get $result agentsTotals records]+[dict get $result agentOmitted]!=$expectedAgents} {
    if {[dict get $result status] ne "unavailable"} {dict set result reason aggregation-count-mismatch}
    dict set result status unavailable
    foreach {field expected omitted} [list peers $expectedPeers peerOmitted agents $expectedAgents agentOmitted] {
        dict set result $field {}; dict set result ${field}Totals {distinct 0 records 0 top1 0 top10 0 top100 0 rankedRecords 0}
        dict set result $omitted $expected
    }
}
return $result
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: