CodeGym /Kurslar /SQL SELF /Yüklənmiş məlumatların düzgünlüyünün yoxlanılması

Yüklənmiş məlumatların düzgünlüyünün yoxlanılması

SQL SELF
Səviyyə, Dərs
Mövcuddur

Xarici mənbələrdən məlumat yükləmək elə bil ki, bir işə dostlarını çağırırsan. İstəyirsən ki, hamı düzgün əhval-ruhiyyədə gəlsin — ya da bizim halda, düzgün formatda. Yüklənən faylda kiçik bir səhv belə saatlarla debug, səhv query nəticələri və ya sadəcə cədvəldəki məlumatların korlanmasına səbəb ola bilər.

Bəzən faylda boş sətirlər, artıq boşluqlar, dublikatlar və ya, məsələn, rəqəm olmalı yerdə mətn ola bilər. Əgər üstəlik encoding də uyğun olmasa, cədvəl faylı qəbul etməyə bilər.

Bunun baş verməməsi üçün, məlumatları əvvəlcədən — yükləməzdən əvvəl və ya dərhal sonra — düzgünlüyünü yoxlamağı öyrənmək vacibdir. İndi baxaq, bunu necə etmək olar.

Məlumatların strukturunun yoxlanılması

  1. Cədvəlin strukturu ilə yüklənmiş məlumatların müqayisəsi

Ən birinci addım — əmin olmaq lazımdır ki, məlumatlar cədvəlin strukturuna uyğun yüklənib. Məsələn, sən students cədvəlini tələbələr haqqında məlumat saxlamaq üçün yaratmısan:

CREATE TABLE students (
    student_id SERIAL PRIMARY KEY,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    birth_date DATE,
    email VARCHAR(100) UNIQUE
);

Əgər bu cədvələ məlumat yükləmisənsə, əvvəlcə sadəcə baxaq, orada nə var:

SELECT * FROM students;

Qaytarılan sətirlər cədvəldəki bütün qeydləri göstərəcək. Əgər CSV-fayldakı məlumatların strukturu cədvəlin strukturuna uyğun deyilsə, yükləmə zamanı səhvlər görəcəksən. Amma səhv çıxmadısa belə, bu o demək deyil ki, hər şey ideal yüklənib.

  1. Məlumat tiplərinin yoxlanılması

PostgreSQL funksiyalarından istifadə edərək sütunların tərkibini yoxla. Məsələn:

Boş dəyərlərin (NULL) yoxlanılması:

Cədvəldə NOT NULL olan vacib sahələr varsa, onların həqiqətən doldurulduğuna əmin olmalısan. Məsələn:

SELECT * FROM students WHERE first_name IS NULL OR last_name IS NULL;

Məlumat formatlarının yoxlanılması:

Bəzən məlumatlar string kimi yüklənir, halbuki tarix və ya rəqəm olmalı idi. Bunu yoxlamaq üçün uyğun PostgreSQL funksiyalarından istifadə et, məsələn:

SELECT * FROM students WHERE birth_date::DATE IS NULL;

Bu query göstərir ki, hansı sətirlərdə birth_date sahəsini DATE tipinə çevirmək olmur.

Səhvlərin yoxlanılması

  1. Dublikatların axtarışı

Dublikat qeydlər ən yayılmış problemlərdəndir. Tutaq ki, sənin məlumatların email (email) üzrə unikal olmalıdır. Dublikatları tapmaq üçün belə bir query istifadə et:

SELECT email, COUNT(*)
FROM students
GROUP BY email
HAVING COUNT(*) > 1;

Bu query sənə bütün təkrarlanan email-ləri və onların neçə dəfə olduğunu göstərəcək. Əgər email sütunu UNIQUE kimi qurulubsa, belə məlumatları yükləmək səhv verəcək.

  1. Düzgün olmayan məlumatların yoxlanılması

Əgər gözləyirsən ki, birth_date sahəsində yalnız doğum tarixləri olsun, bütün dəyərlərin normal intervalda olduğuna əmin olmalısan. Məsələn:

SELECT * FROM students
WHERE birth_date < '1900-01-01' OR birth_date > CURRENT_DATE;

Bu query göstərir ki, hansı sətirlərdə doğum tarixi reallıqdan çox uzaqdır.

Düzgün olmayan məlumatlarla işləmək

Problemləri tapdıqdan sonra onları düzəltmək lazımdır. Gəlin baxaq, bunu necə etmək olar.

  1. Düzgün olmayan məlumatların silinməsi

Cədvəldə boş adlarla sətirlər tapılıbsa, onları silə bilərsən:

DELETE FROM students
WHERE first_name IS NULL OR last_name IS NULL;

Amma məlumatları siləndə ehtiyatlı ol! Ola bilər ki, onlar vacibdir, bəlkə də silmək əvəzinə onları yeniləmək daha yaxşıdır.

  1. Məlumatların yenilənməsi

Əgər boş məlumatlı sətirlər tapmısansa, onları başqa mənbələr və ya ehtimallara əsaslanaraq yeniləyə bilərsən. Məsələn:

UPDATE students
SET email = 'unknown@example.com'
WHERE email IS NULL;

Məlumatların analiz üçün vizuallaşdırılması

  1. Aqreqat funksiyalardan istifadə

Bəzən məlumatları yoxlamaq üçün aqreqatları hesablamaq faydalı olur. Məsələn, hər il neçə tələbə doğulub bilmək üçün belə et:

SELECT EXTRACT(YEAR FROM birth_date) AS year, COUNT(*)
FROM students
GROUP BY year
ORDER BY year;

Bu query sənə illər üzrə paylanmanı göstərəcək və anomaliyaları aşkar etməyə kömək edəcək (məsələn, bir ildə şübhəli dərəcədə çox tələbə varsa).

  1. Məlumatların constraint-lərlə yoxlanılması

Əmin ol ki, məlumatlar cədvəldə təyin olunmuş constraint-lərə uyğundur, məsələn, belə:

Unikallığın yoxlanılması:

SELECT DISTINCT email
FROM students;

Əgər unikal dəyərlərin sayı ümumi sətir sayından azdırsa — deməli, dublikatlar var.

Dəyərlərin diapazonunun yoxlanılması:

SELECT * FROM students
WHERE LENGTH(first_name) > 50 OR LENGTH(last_name) > 50;

Bu, tələbə adlarının 50 simvoldan çox olmadığını yoxlamağa kömək edəcək.

Bəs hər şey pisdirsə nə etməli?

Bəzən məlumatlar o qədər pis olur ki, onları yenidən yükləmək daha asandır.

  1. Cədvəldəki bütün sətirləri sil:

    TRUNCATE TABLE students;
    
  2. Əsas CSV-faylı Python, Excel və ya başqa bir alətlə düzəlt.

  3. Məlumatları COPY komandası ilə yenidən yüklə.

Praktiki tətbiq

Məlumatların validasiyası bacarığı sənə hər dəfə xarici mənbələrlə işləyəndə lazım olacaq. Müsahibələrdə, məsələn, səndən SQL-query yazıb daxil olan məlumatların keyfiyyətini yoxlamağı istəyə bilərlər — bu, adi haldır. Real layihələrdə vəziyyət heç də asan deyil: müştəridən və ya başqa şöbədən gələn məlumatlar demək olar ki, həmişə səhvlərlə olur və məhz sən birinci onları görüb düzəldə biləcəksən, hələ bug-lar çıxmamışdan qabaq.

Məlumatların müntəzəm yoxlanılması bazanı qaydasında saxlamağa kömək edir — və bu, sadəcə formal qayda deyil, həqiqətən vaxt, əsəb və bütün komandanın gücünə qənaət edir. Yəni, əgər sən tez başa düşə bilirsənsə ki, məlumatlar qaydasındadır, deməli, PostgreSQL ustası olmağa bir addım daha yaxınsan.

2
Tapşırıq
SQL SELF, səviyyə, dərs
Bağlanıb
Boş dəyərlərin olub-olmadığını yoxlamaq
Boş dəyərlərin olub-olmadığını yoxlamaq
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION