Skip to content

Commit f349dec

Browse files
Merge pull request #466 from erikdarlingdata/fix/finops-view-aggregate
Fix finops_utilization_efficiency: separate window function from aggregates
2 parents c1893e4 + 48ba759 commit f349dec

1 file changed

Lines changed: 24 additions & 14 deletions

File tree

install/54_create_finops_views.sql

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -157,15 +157,11 @@ CREATE OR ALTER VIEW
157157
AS
158158
WITH
159159
/*
160-
CPU utilization over last 24 hours
160+
CPU p95 via window function (must be separate from aggregates)
161161
*/
162-
cpu_stats AS
162+
cpu_p95 AS
163163
(
164164
SELECT
165-
avg_cpu_pct =
166-
AVG(CONVERT(decimal(5,2), cus.sqlserver_cpu_utilization)),
167-
max_cpu_pct =
168-
MAX(cus.sqlserver_cpu_utilization),
169165
p95_cpu_pct =
170166
CONVERT
171167
(
@@ -175,23 +171,37 @@ WITH
175171
ORDER BY
176172
cus.sqlserver_cpu_utilization
177173
) OVER ()
178-
),
174+
)
175+
FROM collect.cpu_utilization_stats AS cus
176+
WHERE cus.collection_time >= DATEADD(HOUR, -24, SYSDATETIME())
177+
),
178+
/*
179+
CPU aggregates
180+
*/
181+
cpu_agg AS
182+
(
183+
SELECT
184+
avg_cpu_pct =
185+
AVG(CONVERT(decimal(5,2), cus.sqlserver_cpu_utilization)),
186+
max_cpu_pct =
187+
MAX(cus.sqlserver_cpu_utilization),
179188
sample_count =
180189
COUNT_BIG(*)
181190
FROM collect.cpu_utilization_stats AS cus
182191
WHERE cus.collection_time >= DATEADD(HOUR, -24, SYSDATETIME())
183192
),
184193
/*
185-
Deduplicate CPU stats (PERCENTILE_CONT is a window function)
194+
Combine CPU stats
186195
*/
187196
cpu_dedup AS
188197
(
189-
SELECT TOP (1)
190-
cs.avg_cpu_pct,
191-
cs.max_cpu_pct,
192-
cs.p95_cpu_pct,
193-
cs.sample_count
194-
FROM cpu_stats AS cs
198+
SELECT
199+
ca.avg_cpu_pct,
200+
ca.max_cpu_pct,
201+
p95_cpu_pct =
202+
(SELECT TOP (1) cp.p95_cpu_pct FROM cpu_p95 AS cp),
203+
ca.sample_count
204+
FROM cpu_agg AS ca
195205
),
196206
/*
197207
Latest memory stats

0 commit comments

Comments
 (0)