Мазмунга өтүү

Жыйынтык долбоор: сатуу аналитикасынын базасы

Сабактын башталышы

Жыйынтык долбоор: сатуу аналитикасынын базасы

Дүкөндүн жүктөлгөн транзакциялык базасын тез, суроолорго ыңгайлуу аналитика катмарына айландырабыз

Негизги идея: Отчёт суроолору менен заказ кабыл алуу суроолору тескери нерселерди каалайт. Бул акыркы долбоордо сиз күнүмдүк жазуу үчүн баштапкы OLTP таблицаларын сактап каласыз жана алардын үстүнө өзүнчө жылдыз түрүндөгү аналитика катмарын курасыз: кичине өлчөм таблицалары менен курчалган кенен fact_sales таблицасы. Бул катмарды бир INSERT ... SELECT менен жүктөйсүз, панелдерди терезе функциялары менен куруп, туура индекстер менен тездетесиз — ар бир чечимди EXPLAIN аркылуу текшерип.
Аягында сиз төмөнкүлөрдү жасай аласыз:
  • бар OLTP моделинен жылдыз схемасын (факт + өлчөмдөр) долбоорлоо,
  • нормалдаштырылган булактардан факт таблицасын бир join суроосу менен жүктөө,
  • рейтинг, өсүп бараткан жыйынды жана когорта панелдерин терезе функциялары менен куруу,
  • факт таблицасы үчүн курама индекстерди тандап, аларды EXPLAIN менен ырастоо,
  • денормалдаштырылган аналитикалык көчүрмөнүн ак ниет соодалашууларын сүрөттөө.

1. Булак: биздин OLTP дүкөн

Баары сиз мурунтан кура билген нормалдаштырылган операциялык базадан башталат. Анда төрт таблица бар: кардарлар заказ берет, ар бир заказдын позициялары бар, ал эми ар бир позиция товарга шилтейт.

CREATE TABLE customers (
  customer_id  INT PRIMARY KEY,
  name         VARCHAR(80),
  country      VARCHAR(40),
  signup_date  DATE
);
CREATE TABLE products (
  product_id   INT PRIMARY KEY,
  name         VARCHAR(80),
  category     VARCHAR(40),
  price        DECIMAL(10,2)
);
CREATE TABLE orders (
  order_id     INT PRIMARY KEY,
  customer_id  INT REFERENCES customers(customer_id),
  order_date   DATE,
  status       VARCHAR(20)
);
CREATE TABLE order_items (
  order_id     INT REFERENCES orders(order_id),
  product_id   INT REFERENCES products(product_id),
  quantity     INT,
  unit_price   DECIMAL(10,2),
  PRIMARY KEY (order_id, product_id)
);

Суроолорду көрсөтмөлүү кылуу үчүн бир нече сап:

INSERT INTO customers VALUES
  (1,'Aida','KG','2024-01-05'),
  (2,'Bekzat','KZ','2024-02-11'),
  (3,'Chris','US','2024-02-20');

INSERT INTO products VALUES
  (10,'Keyboard','Peripherals',25.00),
  (11,'Mouse','Peripherals',15.00),
  (12,'Monitor','Displays',180.00);

INSERT INTO orders VALUES
  (100,1,'2024-03-01','paid'),
  (101,2,'2024-03-02','paid'),
  (102,1,'2024-03-15','paid');

INSERT INTO order_items VALUES
  (100,10,2,25.00),(100,11,1,15.00),
  (101,12,1,180.00),
  (102,11,3,15.00),(102,12,1,180.00);

Бул схема заказ жазуу үчүн эң сонун: маалымат кайталанбайт, тышкы ачкычтар таза. Бирок «категориялар боюнча айлык киреше, рейтинг менен» деген отчёт ар жолу төрт таблицаны бириктирүүгө аргасыз. Дал ушул жерде аналитика катмары өзүн актайт.

Бул сабакты YourAIZone платформасында улантыңыз

Толук сабакта — толук түшүндүрмө, чыгарылган мисалдар, көп кездешкен каталар, заматта текшерилүүчү тесттер жана ЖИ-репетитор. Конок катары дароо баштаңыз же прогрессти сактоо үчүн аккаунт түзүңүз.

Толук сабакта

  • Толук түшүндүрмө
  • Чыгарылган мисалдар
  • Көп кездешкен каталар жана алардан кантип качуу керек
  • Тест суроолору: 15
  • Тема боюнча суроолорго жооп берген ЖИ-репетитор
  • Окуучу, ата-эне жана мугалим үчүн прогрессти көзөмөлдөө