Joseph Doherty
0f5e70fd35
feat(kpihistory): add KpiRollupHourly table + EF config + migration (plan #22 T1)
...
New KpiRollupHourly entity is the hourly pre-aggregated series backbone folded
from raw KpiSample rows, letting long-range (30d/90d) trend reads scan ~60x fewer
rows. Same (Source, Metric, Scope, ScopeKey) series key as KpiSample plus
HourStartUtc bucket, folded Value, and MinValue/MaxValue/SampleCount fidelity
columns. UNIQUE IX_KpiRollupHourly_Series (upsert key + range-read cover, with the
default [ScopeKey] IS NOT NULL filter suppressed so Global rows participate) and
IX_KpiRollupHourly_Hour for purge. Non-partitioned, [PRIMARY], no DB-role restriction.
Claude-Session: https://claude.ai/code/session_01MtdgwpEeCUn6cUA5f1LMPj
2026-07-10 11:41:58 -04:00
..
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-07-07 11:03:26 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 09:37:45 -04:00
2026-05-28 11:56:56 -04:00
2026-05-28 11:56:56 -04:00
2026-05-29 15:57:29 -04:00
2026-05-29 15:57:29 -04:00
2026-06-02 05:39:59 -04:00
2026-06-02 05:39:59 -04:00
2026-06-02 08:00:47 -04:00
2026-06-02 08:00:47 -04:00
2026-07-07 11:03:26 -04:00
2026-06-02 14:06:46 -04:00
2026-06-19 01:57:02 -04:00
2026-06-15 13:13:22 -04:00
2026-06-15 14:40:38 -04:00
2026-06-15 14:40:38 -04:00
2026-06-16 15:23:13 -04:00
2026-06-16 15:23:13 -04:00
2026-06-17 19:44:51 -04:00
2026-06-17 19:44:51 -04:00
2026-06-18 02:09:31 -04:00
2026-06-18 02:09:31 -04:00
2026-06-18 11:26:48 -04:00
2026-06-18 11:26:48 -04:00
2026-07-07 11:03:26 -04:00
2026-06-19 09:57:55 -04:00
2026-06-19 15:19:40 -04:00
2026-06-19 15:19:40 -04:00
2026-06-26 12:15:16 -04:00
2026-06-26 12:15:16 -04:00
2026-07-09 06:52:44 -04:00
2026-07-09 06:52:44 -04:00
2026-07-09 07:06:50 -04:00
2026-07-09 07:06:50 -04:00
2026-07-10 03:57:49 -04:00
2026-07-10 03:57:49 -04:00
2026-07-10 04:07:44 -04:00
2026-07-10 04:07:44 -04:00
2026-07-10 11:41:58 -04:00
2026-07-10 11:41:58 -04:00
2026-07-10 11:41:58 -04:00