Filter — ma’lumotlar to‘plami yoki oqimidan belgilangan shartga mos elementlarni tanlash, rad etish yoki keyingi bosqichga o‘tkazish amali. Dasturlashda predicate true qaytargan elementlar qoladi; log pipelineida esa level, field, tag yoki matnga qarab recordlar route qilinishi yoki o‘zgartirilishi mumkin.
Predicate
Predicate bitta elementni olib boolean natija qaytaradi. Pure predicate tashqi holatni o‘zgartirmaydi va bir element uchun takror chaqirilganda bir xil natija beradi. Time, random yoki mutable cachega bog‘liq filter reproducibilityni kamaytiradi.
errors = [event for event in events if event.status >= 500]
Bu misolda original ro‘yxat o‘zgarmaydi, yangi tanlangan ro‘yxat hosil bo‘ladi. Lazy streamda esa elementlar consumer talab qilganda tekshiriladi.
Pipeline filtri
Log filter parsed fieldni tekshirishi, keraksiz recordni drop qilishi yoki keyingi route uchun tag qo‘yishi mumkin. Parsingdan oldingi matn filtri tezroq, lekin strukturali ma’noni kamroq biladi. JSON parse dan keyingi filter aniq field type bilan ishlaydi.
Filter tartibi natijaga ta’sir qiladi. Avval fieldni remove qilib, keyin unga qarab filterlash ishlamaydi. Arzon va selektiv shartni erta qo‘yish downstream xarajatni kamaytiradi, ammo audit record tasodifan drop bo‘lmasligi uchun route siyosati ajratiladi.
Include va exclude
Allowlist faqat ma’lum categoryni o‘tkazadi, denylist ma’lum qiymatlarni chiqaradi. Yangi noma’lum qiymat allowlistda bloklanadi, denylistda esa o‘tib ketadi. Security boundary uchun default davranish aniq tanlanadi.
Bir nechta shart AND yoki OR bilan birlashtiriladi. Operator precedence noaniq bo‘lsa qavs ishlatiladi. Regex anchoring bo‘lmasa substring kutilmagan nomga ham mos keladi.
Data va null semantikasi
Missing field, explicit null, bo‘sh satr va nol bir xil emas. SQLda NULL comparison uch qiymatli mantiqqa ega; field = NULL o‘rniga IS NULL ishlatiladi. Log query engine o‘z missing-field semantikasiga ega.
String son bilan solishtirilsa implicit conversion xato yoki kutilmagan tartib beradi. Parser type ni normalizatsiya qiladi. Invalid record alohida error routega tushishi mumkin, jim drop qilinmaydi.
Performance va xavfsizlik
Regex catastrophic backtracking bilan CPUni egallashi mumkin. Untrusted patternga limit yoki xavfsiz engine ishlatiladi. Database filtri indekslangan ustun va sargable expression bilan storagega pushdown qilinsa kamroq data o‘qiladi.
Filter data minimization uchun sensitiveni olib tashlashi mumkin, lekin downstreamga yuborishdan oldin ishlashi kafolatlanadi. Config xatosi keng data ni tashqi outputga chiqarishi mumkin. Sample, unit test va drop counter qoidani tekshiradi.
Tartib va mantiqiy aniqlik
Bir nechta filter ketma-ket qo‘llansa, tartib natijaga va xarajatga ta’sir qiladi. Arzon va ko‘p elementni chiqarib tashlaydigan predicate avval bajarilsa keyingi parsing yoki enrichment yuki kamayadi. Biroq keyingi filter avvalgi bosqich yaratgan fieldga tayanishi mumkin, shunda tartib semantik talabga aylanadi. AND, OR va NOT operatorlarida precedence aniq bo‘lmasa expression qavs bilan yoziladi. Null yoki mavjud bo‘lmagan field false, unknown yoki xato sifatida talqin qilinishi platforma qoidasi bilan belgilanadi.
Filter qoidasi productionga chiqarilishidan oldin tarixiy namunada baholanadi. Tanlangan va chiqarilgan elementlar soni, false positive hamda false negative namunalari ko‘riladi. Qoidaning versiyasi saqlansa keyingi natija aynan qaysi mantiq bilan olingani aniqlanadi.
Bog‘liq tushunchalar
Predicate, Data pipeline, Filter plugin, Query, Regular expression, Data validation, Stream processing