← К оглавлению занятия

Занятие 14. Представления View

📁 Блок: SQL / MySQL / Views / BI ⏱️ Время изучения: ~90 мин 🎯 Сложность: Средняя
#create #view #replace #alter #drop #show #select #from

⚡ Кратко: суть темы

Занятие учит создавать представления (Views) — виртуальные таблицы на основе SQL-запросов. Разбираем связку Python + SQL + BI, витрины данных и команду CREATE VIEW.

  • CREATE VIEW создаёт виртуальную таблицу, которая выполняет запрос при каждом обращении.
  • Views упрощают сложные запросы, скрывают лишние данные и повышают безопасность.
  • Python собирает данные, SQL их структурирует, BI строит отчёты.

Что запомнить: представление — это сохранённый SELECT, который можно использовать как таблицу.

Частая ошибка: пытаться вставить данные в View, не проверив, что оно обновляемое.

📖 Связь Python, SQL и BI-инструментов

В современной аналитике данные проходят через несколько систем. Каждая отвечает за свой этап:

ИнструментРольПримеры задач
Python Сбор, обработка и загрузка данных Запросы к API, очистка CSV, подключение к базе через pymysql или sqlalchemy
SQL / СУБД Хранение, структурирование и выборка данных CREATE TABLE, INSERT, SELECT, CREATE VIEW
BI-инструменты Визуализация, отчёты, дашборды Tableau, Power BI, Metabase, Superset

Типичный поток:

  1. Python забирает данные из внешних источников (API, файлы, другие базы).
  2. Python очищает данные и загружает их в SQL-базу.
  3. В базе создаются таблицы и представления, удобные для анализа.
  4. BI-инструмент подключается к базе и строит визуализации поверх Views.

Проверить по документации: набор популярных BI-инструментов и способы их подключения к MySQL/PostgreSQL постоянно меняются. Конкретные шаги подключения лучше уточнять в актуальной документации выбранного инструмента.

📖 Витрины данных и зачем они нужны

Витрина данных (data mart) — это подмножество данных, подготовленное для конкретной задачи или отдела. Витрины часто создают в виде:

  • Агрегированных таблиц (суммы продаж по месяцам, средние чеки).
  • Представлений (Views), которые объединяют несколько таблиц и скрывают сложность.

Преимущества витрин:

  • Упрощение отчётов: BI-инструмент работает с готовой структурой.
  • Повышение производительности: тяжёлые вычисления делаются на стороне базы.
  • Единообразие: все пользователи видят одинаковые цифры.

📖 Представления (Views) в SQL

Представление (View) — это виртуальная таблица, созданная на основе SQL-запроса. Оно не хранит данные само по себе, а каждый раз выполняет свой SELECT при обращении.

Общий шаблон

CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;

Зачем нужны представления

ПричинаОписание
Упрощение сложных запросов Сложный JOIN или подзапрос прячется за простым именем таблицы.
Повышение безопасности Можно показать только нужные столбцы или строки, не открывая всю таблицу.
Упрощение доступа к данным Пользователи работают с понятными именами, не зная структуры базы.
Изоляция данных Бизнес-логика вынесена в View; изменения исходных таблиц меньше влияют на отчёты.
Поддержка совместимости Старые приложения могут работать через View, даже если таблицы изменились.

Пример: представление для BI

CREATE VIEW Employee_Contact_View AS
SELECT EmployeeID, FirstName, LastName, Email
FROM Employees;

📖 Обновляемые представления

Некоторые Views позволяют изменять данные в исходной таблице через обычные INSERT, UPDATE или DELETE. Чтобы представление было обновляемым, обычно нужно:

  • Один источник данных (FROM одна таблица).
  • Отсутствие агрегирующих функций (SUM, COUNT и т.д.).
  • Отсутствие DISTINCT, GROUP BY, UNION.

Проверить по документации: правила обновляемости Views различаются между MySQL, PostgreSQL, SQL Server и SQLite. Перед проектированием проверьте документацию вашей СУБД.

✨ Современные практики

  • Называйте Views осмысленно: Sales_Monthly_View, Active_Users_View.
  • Используйте Views как слой для BI, чтобы отчёты не зависели от внутренней структуры таблиц.
  • Не злоупотребляйте сложными Views в критичных к производительности запросах — каждое обращение выполняет базовый SELECT заново.
  • Для тяжёлых аналитических запросов рассматривайте материализованные представления (materialized views) или агрегированные таблицы.