Aggregation — ko‘p ma’lumot elementlarini guruhlash va ulardan yig‘ma qiymat hosil qilish jarayonidir. Natija elementlarning to‘liq nusxasi emas, balki count, sum, minimum, maximum, average yoki taqsimot kabi qisqartirilgan tasvirdir. Aggregation database, analytics, monitoring va stream processing tizimlarida asosiy amal hisoblanadi.
Guruh va o‘lchov
Aggregation ikki qarorni talab qiladi: elementlar qaysi kalit bo‘yicha guruhlanadi va har guruh uchun qaysi o‘lchov hisoblanadi. Masalan, requestlar status_code bo‘yicha guruhlanib, har kodning soni olinadi. Guruh kaliti dimension, hisoblanadigan qiymat measure deb yuritilishi mumkin.
SQL misoli:
SELECT status_code, COUNT(*) AS requests,
AVG(duration_ms) AS avg_duration
FROM request_log
GROUP BY status_code;
WHERE guruhlashdan oldingi satrlarni filtrlasa, HAVING hosil bo‘lgan guruhlarni filtrlash uchun ishlatiladi. Ushbu bosqichlarni almashtirish natijani o‘zgartiradi.
Aggregate funksiyalar
COUNT elementlar sonini, SUM jami miqdorni, MIN va MAX chegaralarni beradi. Arithmetic mean barcha qiymatlar yig‘indisini ularning soniga bo‘ladi. Turli hajmdagi guruhlarning o‘rtachalarini yana oddiy o‘rtachalash umumiy average’ni bermaydi; har guruhning counti bilan weighted hisob zarur.
Null qiymat semantikasi tizimga bog‘liq. SQLda COUNT(*) satrlarni sanaydi, COUNT(column) esa null bo‘lmagan qiymatlarni sanaydi. Bo‘sh guruh, nol va mavjud bo‘lmagan qiymatni bir ma’noda talqin qilish analytics xatosiga olib keladi.
Median va percentile oddiy sum kabi to‘liq birlashtirilmaydi. Aniq hisob uchun ko‘p qiymat saqlanishi mumkin; katta tizimlar t-digest yoki histogram kabi taxminiy strukturalardan foydalanadi. Taxminiy natija bilan birga error yoki resolution xususiyati hujjatlashtiriladi.
Vaqt oynalari
Stream cheksiz bo‘lgani uchun aggregation vaqt yoki hodisa chegarasiga bo‘linadi. Tumbling window ketma-ket, kesishmaydigan oynalarni; sliding window esa ustma-ust davrlarni hosil qiladi. Session window foydalanuvchi faolligi orasidagi tanaffusga qarab yopiladi.
Event time hodisa yuz bergan vaqtni, processing time tizim uni ko‘rgan vaqtni bildiradi. Kech kelgan hodisalar yopilgan oynani o‘zgartirishi mumkin. Watermark tizim qanchalik kechikishni kutishini belgilaydi; undan keyingi yozuv tashlab yuborilishi, alohida oqimga berilishi yoki oldingi natijani tuzatishi mumkin.
Taqsimlangan hisoblash
Associative va commutative funksiyalar parallel aggregation uchun qulay. Har worker partial sum va count hisoblaydi, coordinator ularni birlashtiradi. Average’ni worker average’lari bilan emas, (jami sum)/(jami count) orqali hosil qilish kerak. Min, max va count ham shunday partial natijalardan yig‘iladi.
Guruh kalitlari notekis tarqalsa bitta partition juda katta yuk oladi. Buni data skew deyiladi. Hot keyni vaqtincha kichik subkeylarga bo‘lib, keyin ikkinchi aggregation bilan birlashtirish mumkin. Biroq bu usul order-sensitive yoki aniq percentile hisobiga mos kelmasligi mumkin.
Aniqlik va resurs narxi
Yuqori cardinality — masalan, har request IDni guruh qilish — deyarli har element uchun alohida state yaratadi. Xotira, indeks hajmi va query vaqti keskin ortadi. Dimension tanlashdan oldin uning mumkin bo‘lgan qiymatlari, retention va biznes ma’nosi baholanadi.
Aggregation xom ma’lumotdagi tafsilotni yo‘qotadi. Natijadan individual hodisani tiklab bo‘lmaydi. Shu sabab audit yoki diagnostika uchun raw data belgilangan muddat saqlanishi, dashboard uchun esa oldindan hisoblangan rollup ishlatilishi mumkin. Timezone, birlik, rounding va grouping versiyasi metadata sifatida saqlansa natijalar qayta talqin qilinadi.
Bog‘liq tushunchalar
GROUP BY, Window function, Stream processing, Cardinality, Histogram, Rollup, Data skew