LANZ queue Size information filtering the null-values

let intervalToMonitor = "10s" # Can be "1m", "10s" or "1ms"
let queueToMonitor = "queueSize" # Can be "queueSize" (to monitor queue size), "qDropCount" (to monitor actual drops) or "txLatency" (to monitor Tx latency)

# Section to get a Serial-number to hostname dict (SNToHostnameDict)
let SNToHostnameDict = newDict()
let dataDeviceAnalytics = `analytics:/Devices/*/versioned-data/Device`
for device, deviceData in dataDeviceAnalytics {
   let mergedDeviceData = merge(deviceData)
   SNToHostnameDict[device] = mergedDeviceData["hostname"]
}

# let data = `analytics:/Devices/*/versioned-data/interfaces/data/*/lanz/aggregate-congestion/*`[_timeWindowStart:_timeWindowEnd]
let data = `analytics:/Devices/*/versioned-data/interfaces/data/*/lanz/aggregate-congestion/*`[7*24h]
let result = newDict()
for deviceSN, deviceData in data {
    for interface, interfaceData in deviceData {
        for interval, aggData in interfaceData {
            let empty = true
            for timestamp, timeseriesData in aggData {
                if (dictHasKey(timeseriesData, queueToMonitor) && timeseriesData[queueToMonitor]["avg"] > 0 && interval == intervalToMonitor && strHasPrefix(interface, "Ethernet")) {
                    let empty = false
                }
            }
            if (!empty) {
                let deviceHostname = SNToHostnameDict[deviceSN]
                result[interface + " on " + deviceHostname + " (" + interval + ")"] = aggData | map(_value[queueToMonitor]["avg"])
            }

        }
    }
}
result
LANZ queue Size information filtering the null-values

Download the Dashboard JSON here