AXV

Fakt va o'lcham jadvallari

grain, additive va semi-additive o'lchovlar, surrogate kalit, yuklash va tekshirish

10-sinfBI & ML5-hafta · 14-dars

Bugun nimalarni o'rganamiz?

Dimension jadvallari

Tavsif va surrogate kalit

Fakt jadvali

Grain va o'lchov turlari

Yuklash va tekshirish

INSERT ... SELECT va yaxlitlik

Takrorlash

5 hudud va 3 yil, grain hudud x yil bo'lsa, fakt jadvalda nechta qator bo'ladi?

5 x 3 = 15 qator.
01

Dimension jadvallari

Tavsif va surrogate kalit

Dimension tuzilishi

Surrogate:hudud_key Natural:hudud_id Atributlar:nomi, markaz Fakt bilan FK Surrogate kalit fakt jadvalga FK bo'lib ulanadi

dim_hudud va dim_sana


CREATE TABLE dim_hudud (
    hudud_key INTEGER PRIMARY KEY AUTOINCREMENT,
    hudud_id  INTEGER UNIQUE,
    nomi      TEXT NOT NULL,
    markaz    TEXT
);
CREATE TABLE dim_sana (
    sana_key  INTEGER PRIMARY KEY AUTOINCREMENT,
    yil       INTEGER UNIQUE,
    oquv_yili TEXT
);
  
hudud_key — sun'iy kalit, hudud_id — manbadagi natural kalit. Fakt jadval faqat surrogate kalitga tayanadi.

Mini-test

Surrogate kalit nima?

U manba tizimidan mustaqil.
02

Fakt jadvali

Grain va o'lchov turlari

Qanday jamlanadi

Additive:hamma bo'yicha Semi-additive:vaqtdan tashqari Non-additive:jamlanmaydi Nisbat =qismlar Yillik «holat» qiymatini yillar bo'yicha qo'shmang

Semi-additive tuzog'i


-- NOTO'G'RI: 3 yilni qo'shish
SELECT SUM(oquvchilar_soni) FROM fact_kpi;   -- 7 434 000 ?

-- TO'G'RI: bitta yil ichida hududlar bo'yicha jamlash
SELECT SUM(oquvchilar_soni) FROM fact_kpi f
JOIN dim_sana s ON s.sana_key = f.sana_key
WHERE s.yil = 2024;                           -- 2 526 000
  
Yillar bo'yicha qo'shilgan 7 434 000 — mazmunsiz (bir o'quvchi 3 marta sanalgan). O'rtacha olish yoki bitta yil tanlash kerak.

Mini-test

oquvchilar_soni ni 3 yil bo'yicha SUM qilish nega xato?

Yillik holat qiymatini vaqt bo'yicha jamlab bo'lmaydi.
03

Yuklash va tekshirish

INSERT ... SELECT va yaxlitlik

Yuklash zanjiri

Manbajadvallar dim_ laryuklanadi fact JOINorqali Tekshiruv Avval dimension, keyin fakt

Fakt yuklash va tekshirish


INSERT INTO fact_kpi (hudud_key, sana_key, oquvchilar_soni, oqituvchilar_soni, maktablar_soni)
SELECT h.hudud_key, s.sana_key, k.oquvchilar_soni, k.oqituvchilar_soni, k.maktablar_soni
FROM yillik_kpi k
JOIN dim_hudud h ON h.hudud_id = k.hudud_id
JOIN dim_sana  s ON s.yil = k.yil;

-- yetim kalit tekshiruvi
SELECT COUNT(*) FROM fact_kpi f
LEFT JOIN dim_hudud h ON h.hudud_key = f.hudud_key
WHERE h.hudud_key IS NULL;   -- 0 bo'lishi kerak
  
Tekshiruv natijalari: qatorlar 15, yetim kalit 0, grain dublikati yo'q.

Mini-test

Fakt jadval yuklashda surrogate kalit qanday olinadi?

JOIN dim_hudud h ON h.hudud_id = k.hudud_id.

Natural va surrogate kalit

Natural kalit

Manba tizimidagi kod: hudud_id; manba o'zgarsa buzilishi mumkin
VS

Surrogate kalit

Omborning o'z butun kaliti: hudud_key; barqaror

Fakt jadval surrogate kalitga tayanadi.

O'lchov turlari. Bosing

Additive

bosing

Hamma o'lchamlar bo'yicha jamlanadi: maktablar_soni

Semi-additive

bosing

Vaqtdan tashqari jamlanadi: oquvchilar_soni

Non-additive

bosing

Jamlab bo'lmaydi: nisbat, foiz

Degenerate

bosing

Fakt ichidagi dimension kod (masalan, hujjat raqami)

Loyihalash bosqichlari

1. Grain

Fakt qatori nimani anglatadi?

2. Dimension

Surrogate kalit va atributlarni belgilang.

3. O'lchovlar

Har o'lchovning jamlanish turini aniqlang.

Bizning o'lchovlar

O'lchovTuriQanday jamlanadi
maktablar_soniadditive*hududlar bo'yicha SUM
oquvchilar_sonisemi-additivehududlar bo'yicha SUM, yillar bo'yicha AVG
oqituvchilar_sonisemi-additivehududlar bo'yicha SUM
o'quvchi/o'qituvchi nisbatinon-additivetarkibiy qismlardan hisoblanadi

Pastga bosing: tekshiruv ro'yxati

Yuklashdan keyingi tekshiruv

  1. Qatorlar soni manba bilan mos: 15.
  2. Yetim kalit yo'q: LEFT JOIN ... IS NULL natijasi 0.
  3. Grain dublikati yo'q: HAVING COUNT(*) > 1 bo'sh.

Yetim kalitni tekshirish


SELECT COUNT(*) FROM fact_kpi;
  

Yetim kalitni tekshirish


SELECT COUNT(*) FROM fact_kpi f
LEFT JOIN dim_hudud h ON h.hudud_key = f.hudud_key
WHERE h.hudud_key IS NULL;
  

Yuklash natijalari

0
dim_hudud dagi qator
0
dim_sana dagi qator
0
fact_kpi dagi qator

5 x 3 = 15; yetim kalit 0.

Amaliy topshiriq 20 daqiqa

OsonGrain va ustunlar: yillik_kpi uchun fakt jadvalni loyihalang: grain, FK lar va o'lchovlar.
O'rtaDimension yaratish: dim_hudud va dim_sana ni surrogate kalit bilan yarating va manbadan to'ldiring.
O'rtaFakt yuklash: fact_kpi ni yillik_kpi dan dimension lar bilan JOIN qilib yuklang.
QiyinYaxlitlik tekshiruvi: Qatorlar sonini, yetim kalitni va dublikatni tekshiring.
BonusSemi-additive tahlil: Hududlar bo'yicha 2022–2024 o'rtacha o'quvchilar sonini toping.

Dars xulosasi

Dimension

Surrogate kalit, natural kalit va atributlar.

Fact

Grain va o'lchov turlari: additive, semi-additive, non-additive.

Tekshiruv

Qatorlar, yetim kalit va dublikat.

Uyga vazifa: o'z fakt va dimension jadvallaringizni loyihalang va tekshiring.

Keyingi dars: Data Mart

Mart tushunchasi va sohaga oid martlar

5-hafta · 15-dars