Деректерді қалай тазартамыз

Деректер сапасына біздің көзқарасымыз, толық.

Нақты сенсорлардан келетін ауа сапасы деректері — бұл хаос. Аспаптар бұзылады. Көрсеткіштер себепсіз секіреді. Сенсор қатып қалып, сағаттап бір санды жібереді. Мемлекеттік станция ескертусіз өлшем бірліктерін ауыстырады.

Бұл деректерді сол күйінде жарияласаңыз, адамдар қате қорытынды жасайды. Нашар бөліктерін тыныш жойсаңыз, адамдар не істегеніңізді тексере алмайды. Екі нұсқа да бізге қолайсыз.

Біздің көзқарасымыз — мұқият және ашық болу: мүмкін болғанның бәрін тексеру, әр мәселені ашық белгілеу және адамдарға не істегенімізді және неліктен екенін көрсету. Міне, қалай.

Архитектура

Үш деңгей, бір қағида

Түпнұсқа деректер қасиетті. Біз оларды ешқашан өзгертпейміз. Оның орнына, біз олардың үстіне таза деректер құрамыз — және екеуінің арасындағы байланысты сақтаймыз, кез келген адам кез келген жарияланған мәнді бастапқы көзіне дейін бақылай алсын.

0-деңгей

Шикі сақтау

Әр API-ден алынған нақты жауаптар, сол күйінде сақталған. Әр көзге бір кесте. Ештеңе өзгертілмеген, ештеңе жоғалмаған. Бұл біздің негіз.

1-деңгей

Таза және гармонизацияланған

Барлық көздер ортақ бірліктерге келтірілген, барлық өлшемдер бірыңғай форматта. Әр жол сапа белгілерін және бастапқы деректерге сілтемені алып жүреді. Тазарту мен валидация осында жүреді.

2-деңгей

Жарияланған ашық деректер

Тек барлық сапа тексерулерінен өткен өлшемдер. Сіз жүктейтін нәрсе осы — сығылған CSV файлдары, CSV станция тізімдері, картография үшін GeoJSON. Таза, сенімді, пайдалануға дайын.

Сапа бақылауы

Тексерудің төрт деңгейі

Әр деңгей мәселелердің әр түрін ұстайды. Өлшем жарияланған деректер жиынтығына жетпес бұрын төртеуінен де өтуі керек.

1

Кіреберісте

Деректер жүйеге кірмес бұрын, дерекқордың өзі базалық ережелерді қолданады — міндетті өрістер бос бола алмайды, көшірмелер қабылданбайды, координаттар жарамды болуы керек, тек белгілі параметр кодтары қабылданады. Бұзылған немесе толық емес API жауаптары мұнда ұсталады.

2

Тазарту кезінде

Шикі деректерді гармонизацияланған форматқа түрлендіру кезінде әр өлшем жеке тексеріледі: бұл мән физикалық тұрғыдан мүмкін бе? PM2.5 PM10-нан жоғары ма (бұл әдетте сенсор мәселесін білдіреді)? Концентрация теріс пе? Әр мәселе нақты белгі алады.

3

Автоматты тазарту ережелері

Әрбір сағаттық мән жарияланар алдында бірдей ережелерден өтеді. Тексеруден өтпеген мәндер біздің базада белгімен сақталады және жарияланған файлдарға кірмейді:

  • Қатаң шектеу — физикалық шекке тең немесе одан жоғары мәндер (PM2.5 үшін 1 000 мкг/м³) жарамсыз деп саналады
  • Тұрақты станция — бір мән көрсеткіштердің 70%-ын немесе одан көбін құрайтын станция айы
  • Қатып қалған сенсор — бірдей мән қатарынан 6 және одан көп сағат қайталанады
  • Істен шыққан шаң арнасы — тәуліктік медианасы бір ай ішінде он және одан көп күн 2 мкг/м³-тен төмен болатын PM2.5, PM10 немесе TSP датчигі (ҚазГидроМет арналары осылай істен шығады: шамамен 1 мкг/м³ көрсете береді)
  • Қайталанатын шаң арнасы — бір станцияның PM10 мәнін (2% шегінде) тәулік сағаттарының кемінде жартысында қайталайтын PM2.5 көрсеткіші. PM2.5 — PM10-ның бір бөлігі және оған ұзақ уақыт тең бола алмайды, сондықтан мұндай күндердегі және олар қайталанып тұрған кезеңдегі PM2.5 мәндері жарияланбайды
  • Көтерілген төменгі шек — ешқашан төмендемейтін шаң арнасы: 30 күн бойы әр күннің ең таза сағаттарының өзі 30 мкг/м³ және одан жоғары деңгейде қалады. Нақты ауада бір ай ішінде әрдайым таза сағаттар болады; аспап оларды көрсетпесе, ол тұрақты ығысу қосып тұр немесе жоғары мәнде қатып қалған
  • Шулы арна — сағаттан сағатқа секіретін шаң арнасы: бір ай ішінде он екі және одан көп күн сағаттық әдеттегі өзгеріс тәуліктік деңгейдің 40%-ын немесе одан көбін құрайды. Нақты шаң деңгейі сағаттар бойы көтеріліп-төмендейді, бір өлшемнен екіншісіне кездейсоқ секірмейді
  • Аудан бойынша ауытқу — тәуліктік орташа мәні өз ауданының медианасынан 3 робастты стандартты ауытқудан артық алшақтайтын станция
  • Қайталанатын көздер — екі көз бір станция мен бір сағатты берсе, бір мән қалдырылады
  • Алматы, Астана және Қарағандыдан тыс қалалардың көбінде бір ғана станция бар, сондықтан ережелер станцияны тек өзімен салыстырады: қатаң шектер, аспаптың қанығу мәні, 24 сағат және одан ұзақ бірдей мән, 6 сағат және одан ұзақ нөлдік шаң, сондай-ақ жоғарыда сипатталған істен шыққан, қайталанатын, төменгі шегі көтерілген және шулы шаң арналары ережелері. Аспаптың анықтау шегіндегі қысқа қатарлар мен бір сағаттық шыңдар сақталады — өнеркәсіп маңында мұндай шыңдар шынайы
4

Соңғы валидация

Жарияланбас бұрын біз бүкіл деректер жиынтығы бойынша екі тәуелсіз валидация жүйесін іске қосамыз. Олардың кез келгені мәселе тапса — тіпті бір сәтсіз тексеру болса да — мәселе шешілгенше жариялау блокталады.

Егжей-тегжейлі

Валидация тексерулері

Бұл әр жариялау алдында іске қосылатын нақты тексерулер. Қателер экспортты толығымен блоктайды. Ескертулер тіркеліп, тексеріледі.

Тексеру Маңыздылық Нені ұстайды
out_of_range error Физикалық шектерден тыс мәндер
negative_values error Теріс концентрациялар
invalid_floats error NaN, Infinity мәндері
orphan_measurements error Тіркелген станциясы жоқ өлшемдер
duplicate_measurements error Болмауы тиіс көшірмелер
pm25_exceeds_pm10 warning AirKaz сенсорларының белгілі мәселесі
stuck_sensors warning Қатып қалған сенсор көрсеткіштері
spikes warning Кенеттен мән секірулері
stale_stations warning Белсенді станциялар 48+ сағат деректер бермейді

Біз мұндай деңгейдегі егжей-тегжейлілік бәріне арналмағанын білеміз. Көпшілік адамдар деректерді жүктеп, таза екеніне сенгісі келеді. Біз солай болады деп сенеміз.

Бірақ капот астына қарағысы келетіндер үшін — зерттеушілер, инженерлер, нашар деректерден күйгендердің бәрі үшін — біз бәрінің көрінуін қалаймыз. Әдістеме, белгілер, шикі түпнұсқалар. Біз дәл осындай жоба болғымыз келеді.