grain, additive va semi-additive o'lchovlar, surrogate kalit, yuklash va tekshirish
10-sinfBI & ML5-hafta · 14-darsTavsif va surrogate kalit
Grain va o'lchov turlari
INSERT ... SELECT va yaxlitlik
5 hudud va 3 yil, grain hudud x yil bo'lsa, fakt jadvalda nechta qator bo'ladi?
Tavsif va surrogate kalit
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.Surrogate kalit nima?
Grain va o'lchov turlari
-- 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
oquvchilar_soni ni 3 yil bo'yicha SUM qilish nega xato?
INSERT ... SELECT va yaxlitlik
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
Fakt jadval yuklashda surrogate kalit qanday olinadi?
JOIN dim_hudud h ON h.hudud_id = k.hudud_id.hudud_id; manba o'zgarsa buzilishi mumkinhudud_key; barqarorFakt jadval surrogate kalitga tayanadi.
Hamma o'lchamlar bo'yicha jamlanadi: maktablar_soni
Vaqtdan tashqari jamlanadi: oquvchilar_soni
Jamlab bo'lmaydi: nisbat, foiz
Fakt ichidagi dimension kod (masalan, hujjat raqami)
Fakt qatori nimani anglatadi?
Surrogate kalit va atributlarni belgilang.
Har o'lchovning jamlanish turini aniqlang.
| O'lchov | Turi | Qanday jamlanadi |
|---|---|---|
maktablar_soni | additive* | hududlar bo'yicha SUM |
oquvchilar_soni | semi-additive | hududlar bo'yicha SUM, yillar bo'yicha AVG |
oqituvchilar_soni | semi-additive | hududlar bo'yicha SUM |
| o'quvchi/o'qituvchi nisbati | non-additive | tarkibiy qismlardan hisoblanadi |
Pastga bosing: tekshiruv ro'yxati
LEFT JOIN ... IS NULL natijasi 0.HAVING COUNT(*) > 1 bo'sh.
SELECT COUNT(*) FROM fact_kpi;
SELECT COUNT(*) FROM fact_kpi f
LEFT JOIN dim_hudud h ON h.hudud_key = f.hudud_key
WHERE h.hudud_key IS NULL;
5 x 3 = 15; yetim kalit 0.
yillik_kpi uchun fakt jadvalni loyihalang: grain, FK lar va o'lchovlar.dim_hudud va dim_sana ni surrogate kalit bilan yarating va manbadan to'ldiring.fact_kpi ni yillik_kpi dan dimension lar bilan JOIN qilib yuklang.Surrogate kalit, natural kalit va atributlar.
Grain va o'lchov turlari: additive, semi-additive, non-additive.
Qatorlar, yetim kalit va dublikat.
Uyga vazifa: o'z fakt va dimension jadvallaringizni loyihalang va tekshiring.
Mart tushunchasi va sohaga oid martlar
5-hafta · 15-dars