Ana içeriğe geç

windows_1m

windows_1m, Window Servisi tarafından üretilen aylık (1M) pencere istatistiklerini saklar. Her satır bir cihaz-değişken çiftinin tek bir takvim ayına ait finalize edilmiş pencere sonucunu temsil eder.

Aylık pencereler doğrudan hesaplanmaz; windows_1d tablosundaki ilgili aylık günlük satırlar rollup edilerek türetilir. Bu tablo üç pencere tablosunun en yavaş büyüyenidir ve analitik sorgular için birincil kaynaktır. Fatura dönemi, raporlama ve uzun vadeli trend analizleri bu tablodan beslenir.

window_type kolonu yoktur; tablo adından örtük olarak 1M olarak bilinir.

FK Davranış Notları

FKON DELETEON UPDATENot
windows_1m.device_id -> devices.idCASCADECASCADECihaz silinirse tüm aylık pencere istatistikleri de silinir.

Kolonlar

KolonTipNullAçıklama
idbiginthayırOtomatik artan birincil anahtar
device_idvarchar(21)hayırCihaz kimliği
variable_idvarchar(30)hayırDeğişken kimliği (örn. vrms_a, ae_tot)
window_starttimestamptzhayırAy başlangıcı (1. gün 00:00:00 UTC+TZ)
window_endtimestamptzhayırAy sonu (sonraki ayın 1. günü 00:00:00)
anchor_timetimestamptzevetGrid hizalama referans zamanı
finalizedbooleanhayırtrue ise pencere kapanmış, artık sadece Replay Worker güncelleyebilir
calc_versionintegerhayırHesaplama algoritması versiyonu (varsayılan: 1)
sample_countintegerhayırPencereye giren geçerli örnek sayısı
expected_sample_countintegerhayırTeorik beklenen örnek sayısı
completeness_ratiodouble precisionhayırsample_count / expected_sample_count
quality_flagsjsonbhayırGap/reset/rollover/outlier işaretleri
sumdouble precisionevetΣ x_i
sum_sqdouble precisionevetΣ x_i²
mindouble precisionevetPencere içi minimum
maxdouble precisionevetPencere içi maksimum
meandouble precisionevetsum / sample_count
stddevdouble precisionevetStandart sapma
p10double precisionevet10. yüzdelik dilim
p50double precisionevet50. yüzdelik dilim (medyan)
p90double precisionevet90. yüzdelik dilim
sum_tdouble precisionevetΣ t_i — trend için zaman indeks toplamı
sum_vdouble precisionevetΣ v_i — trend için değer toplamı
sum_tvdouble precisionevetΣ (t_i × v_i)
sum_t2double precisionevetΣ t_i²
slopedouble precisionevetLineer trend eğimi
r2double precisionevetTrend uyum katsayısı
first_valuedouble precisionevetPencere başındaki sayaç değeri (yalnız sayaç değişkenlerde)
last_valuedouble precisionevetPencere sonundaki sayaç değeri (yalnız sayaç değişkenlerde)
delta_valuedouble precisionevetlast_value - first_value, reset/rollover düzeltmeli
counter_reset_countintegerevetSayaç reset sayısı (yalnız sayaç değişkenlerde)
counter_rollover_countintegerevetSayaç taşma sayısı (yalnız sayaç değişkenlerde)
created_attimestamptzhayırKayıt oluşturulma zamanı
updated_attimestamptzhayırSon güncelleme zamanı
Sayaç Alanları

first_value, last_value, delta_value, counter_reset_count, counter_rollover_count yalnız variable_type = counter olan değişkenler için anlam taşır. Ölçüm değişkenlerinde bu alanlar NULL kalır.

Hesaplama Kaynağı

Aylık pencere doğrudan ham veri üzerinden değil, windows_1d rollup'ından türetilir. Eksik günler varsa o aralıklar ham kaynaktan tamamlanır.

İndeksler

İndeksTürAmacı
UNIQUE(device_id, variable_id, window_start)UniqueIdempotent upsert anahtarı
(device_id, variable_id, window_end DESC)B-treeSon pencereyi hızlı bulmak
(device_id, window_start DESC)B-treeCihaz bazlı zaman sıralı okuma

Örnek Kayıtlar

{
"id": 301,
"device_id": "400000011D081B70",
"variable_id": "vrms_a",
"window_start": "2026-04-01T00:00:00Z",
"window_end": "2026-05-01T00:00:00Z",
"anchor_time": "2026-04-01T00:00:00Z",
"finalized": false,
"calc_version": 1,
"sample_count": 1248,
"expected_sample_count": 2880,
"completeness_ratio": 0.433,
"quality_flags": { "partial_month": true },
"sum": 285696.0,
"sum_sq": 65361408.0,
"min": 218.2,
"max": 234.7,
"mean": 228.9,
"stddev": 2.68,
"p10": 225.0,
"p50": 229.1,
"p90": 232.3,
"slope": 0.0002,
"r2": 0.08,
"first_value": null,
"last_value": null,
"delta_value": null,
"counter_reset_count": null,
"counter_rollover_count": null,
"created_at": "2026-04-13T00:07:45Z",
"updated_at": "2026-04-13T00:07:45Z"
}