update aggregation calculations
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Nathan Coad
2026-01-22 13:30:53 +11:00
parent ceadf42048
commit baea0cc85c
2 changed files with 43 additions and 7 deletions

View File

@@ -1380,13 +1380,46 @@ SELECT
agg.last_present AS "SnapshotTime", agg.last_present AS "SnapshotTime",
agg.samples_present AS "SamplesPresent", agg.samples_present AS "SamplesPresent",
CASE WHEN totals.total_samples > 0 CASE WHEN totals.total_samples > 0
THEN 1.0 * agg.sum_vcpu / totals.total_samples THEN (1.0 * agg.samples_present / totals.total_samples) * (
SELECT s2."VcpuCount"
FROM snapshots s2
WHERE s2."Vcenter" = agg."Vcenter"
AND (
(s2."VmId" = agg."VmId" AND s2."VmId" IS NOT NULL AND agg."VmId" IS NOT NULL)
OR (s2."VmUuid" = agg."VmUuid" AND s2."VmUuid" IS NOT NULL AND agg."VmUuid" IS NOT NULL)
OR (LOWER(s2."Name") = LOWER(agg."Name") AND s2."Name" IS NOT NULL AND agg."Name" IS NOT NULL)
)
ORDER BY s2."SnapshotTime" DESC
LIMIT 1
)
ELSE NULL END AS "AvgVcpuCount", ELSE NULL END AS "AvgVcpuCount",
CASE WHEN totals.total_samples > 0 CASE WHEN totals.total_samples > 0
THEN 1.0 * agg.sum_ram / totals.total_samples THEN (1.0 * agg.samples_present / totals.total_samples) * (
SELECT s2."RamGB"
FROM snapshots s2
WHERE s2."Vcenter" = agg."Vcenter"
AND (
(s2."VmId" = agg."VmId" AND s2."VmId" IS NOT NULL AND agg."VmId" IS NOT NULL)
OR (s2."VmUuid" = agg."VmUuid" AND s2."VmUuid" IS NOT NULL AND agg."VmUuid" IS NOT NULL)
OR (LOWER(s2."Name") = LOWER(agg."Name") AND s2."Name" IS NOT NULL AND agg."Name" IS NOT NULL)
)
ORDER BY s2."SnapshotTime" DESC
LIMIT 1
)
ELSE NULL END AS "AvgRamGB", ELSE NULL END AS "AvgRamGB",
CASE WHEN agg.samples_present > 0 CASE WHEN totals.total_samples > 0
THEN 1.0 * agg.sum_disk / agg.samples_present THEN (1.0 * agg.samples_present / totals.total_samples) * (
SELECT s2."ProvisionedDisk"
FROM snapshots s2
WHERE s2."Vcenter" = agg."Vcenter"
AND (
(s2."VmId" = agg."VmId" AND s2."VmId" IS NOT NULL AND agg."VmId" IS NOT NULL)
OR (s2."VmUuid" = agg."VmUuid" AND s2."VmUuid" IS NOT NULL AND agg."VmUuid" IS NOT NULL)
OR (LOWER(s2."Name") = LOWER(agg."Name") AND s2."Name" IS NOT NULL AND agg."Name" IS NOT NULL)
)
ORDER BY s2."SnapshotTime" DESC
LIMIT 1
)
ELSE NULL END AS "AvgProvisionedDisk", ELSE NULL END AS "AvgProvisionedDisk",
CASE WHEN totals.total_samples > 0 CASE WHEN totals.total_samples > 0
THEN 1.0 * agg.samples_present / totals.total_samples THEN 1.0 * agg.samples_present / totals.total_samples

View File

@@ -759,10 +759,10 @@ INSERT INTO %s (
if v.samples == 0 { if v.samples == 0 {
continue continue
} }
avgVcpu := float64(v.sumVcpu) / float64(v.samples)
avgRam := float64(v.sumRam) / float64(v.samples)
avgDisk := v.sumDisk / float64(v.samples)
total := float64(totalSamples) total := float64(totalSamples)
avgVcpu := 0.0
avgRam := 0.0
avgDisk := 0.0
avgPresent := 0.0 avgPresent := 0.0
tinPct := 0.0 tinPct := 0.0
bronzePct := 0.0 bronzePct := 0.0
@@ -770,6 +770,9 @@ INSERT INTO %s (
goldPct := 0.0 goldPct := 0.0
if total > 0 { if total > 0 {
avgPresent = float64(v.samples) / total avgPresent = float64(v.samples) / total
avgVcpu = avgPresent * float64(v.lastVcpu)
avgRam = avgPresent * float64(v.lastRam)
avgDisk = avgPresent * v.lastDisk
} }
if v.samples > 0 { if v.samples > 0 {
tinPct = float64(v.tinHits) * 100 / float64(v.samples) tinPct = float64(v.tinHits) * 100 / float64(v.samples)