Разбираем SQL-запросы с помощью Python
Какие таблицы и колонки использует запрос? Библиотека sql-metadata извлечёт эту информацию из SQL без подключения к базе и выполнения запроса.
Умеет работать с алиасами и подзапросами, определять колонки в
Пригодится для анализа SQL-файлов, автоматической документации и поиска зависимостей между запросами и таблицами.
https://github.com/macbre/sql-metadata
👉 @SQLPortal
Какие таблицы и колонки использует запрос? Библиотека sql-metadata извлечёт эту информацию из SQL без подключения к базе и выполнения запроса.
Умеет работать с алиасами и подзапросами, определять колонки в
SELECT, WHERE, JOIN и других частях запроса. Поддерживает синтаксис PostgreSQL, MySQL, SQLite, SQL Server и Apache Hive.Пригодится для анализа SQL-файлов, автоматической документации и поиска зависимостей между запросами и таблицами.
https://github.com/macbre/sql-metadata
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1
5 групп реляционных СУБД, которые полезно знать
• С открытым исходным кодом: PostgreSQL, MariaDB.
• Коммерческие и корпоративные: Oracle Database, Microsoft SQL Server, IBM Db2.
• Встраиваемые и настольные: SQLite, Microsoft Access.
• Распределённые SQL / NewSQL: CockroachDB, YugabyteDB.
• Облачные аналитические хранилища: Snowflake, Amazon Redshift.
Это условная группировка: здесь смешаны лицензирование, архитектура и назначение. Категории могут пересекаться — например, распределённая СУБД может одновременно быть open-source.
👉 @SQLPortal
• С открытым исходным кодом: PostgreSQL, MariaDB.
• Коммерческие и корпоративные: Oracle Database, Microsoft SQL Server, IBM Db2.
• Встраиваемые и настольные: SQLite, Microsoft Access.
• Распределённые SQL / NewSQL: CockroachDB, YugabyteDB.
• Облачные аналитические хранилища: Snowflake, Amazon Redshift.
Это условная группировка: здесь смешаны лицензирование, архитектура и назначение. Категории могут пересекаться — например, распределённая СУБД может одновременно быть open-source.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
DBcooper — лёгкий клиент для работы с базами данных
Open-source-приложение на Tauri, Rust и React объединяет PostgreSQL, SQLite, Redis и ClickHouse в одном интерфейсе. Акцент на простоте и удобной работе с клавиатуры. А ещё есть генерация SQL по описанию на естественном языке.
https://github.com/amalshaji/dbcooper
👉 @SQLPortal
Open-source-приложение на Tauri, Rust и React объединяет PostgreSQL, SQLite, Redis и ClickHouse в одном интерфейсе. Акцент на простоте и удобной работе с клавиатуры. А ещё есть генерация SQL по описанию на естественном языке.
https://github.com/amalshaji/dbcooper
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Оконные функции SQL: аналитика без потери отдельных строк
В отличие от
Ранжирование, накопительные суммы, скользящие средние, сравнение с предыдущей или следующей строкой через
👉 @SQLPortal
В отличие от
GROUP BY, оконные функции позволяют выполнять вычисления по группам строк, сохраняя каждую строку в результате.Ранжирование, накопительные суммы, скользящие средние, сравнение с предыдущей или следующей строкой через
LAG и LEAD, работа с процентилями и границами окна — базовые приёмы, которые стоит освоить.Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Горизонтальные или вертикальные столбцы: что выбрать?
Оба варианта помогают сравнивать категории, но ориентация влияет на читаемость.
• Горизонтальные столбцы удобны, когда категорий много или у них длинные названия.
• Вертикальные столбцы подходят для небольшого количества категорий, которые нужно быстро сравнить между собой.
👉 @SQLPortal
Оба варианта помогают сравнивать категории, но ориентация влияет на читаемость.
• Горизонтальные столбцы удобны, когда категорий много или у них длинные названия.
• Вертикальные столбцы подходят для небольшого количества категорий, которые нужно быстро сравнить между собой.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2
Какие навыки нужны дата-инженеру?
В вакансиях прослеживается закономерность: на первом месте SQL и Python, дальше — облачные платформы, Spark, хранилища данных, оркестрация пайплайнов, потоковая обработка, Git, контейнеры и инструменты для работы с большими данными.
👉 @SQLPortal
В вакансиях прослеживается закономерность: на первом месте SQL и Python, дальше — облачные платформы, Spark, хранилища данных, оркестрация пайплайнов, потоковая обработка, Git, контейнеры и инструменты для работы с большими данными.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
SQL: порядок написания ≠ порядок обработки
Запрос начинается с
Понимание этой последовательности помогает разобраться, почему алиас из
Важно: это логический порядок, а физический план выполнения выбирает оптимизатор СУБД.
👉 @SQLPortal
Запрос начинается с
SELECT, но логически обрабатывается в другом порядке:FROM / JOIN → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY → LIMITПонимание этой последовательности помогает разобраться, почему алиас из
SELECT обычно недоступен в WHERE, а фильтрация результатов агрегации выполняется через HAVING.Важно: это логический порядок, а физический план выполнения выбирает оптимизатор СУБД.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Чтобы запросы оставались быстрыми, понятными и справлялись с ростом объёма данных, нужны хорошие привычки при их написании.
Вот 15 принципов, которые стоит применять на практике:
1. Избегайте
2. Отфильтровывайте ненужные строки с помощью
3. Понимайте разницу между
4. Используйте CTE вместо громоздких подзапросов для улучшения читаемости.
5. Не маскируйте ошибки логики лишним
6. Используйте
7. Освойте оконные функции для сложных расчётов.
8. Согласовывайте типы данных, чтобы избежать неявных преобразований.
9. Сравнивайте планы для
10. Убирайте
11. Используйте
12. Учитывайте, что функции над индексированными столбцами могут мешать использованию обычного индекса.
13. Используйте
14. Изучайте план выполнения через
15. Проверяйте корректность на небольших наборах данных, а производительность — на объёмах, близких к реальным.
👉 @SQLPortal
Вот 15 принципов, которые стоит применять на практике:
1. Избегайте
SELECT *: выбирайте только нужные столбцы.2. Отфильтровывайте ненужные строки с помощью
WHERE.3. Понимайте разницу между
INNER JOIN и LEFT JOIN.4. Используйте CTE вместо громоздких подзапросов для улучшения читаемости.
5. Не маскируйте ошибки логики лишним
DISTINCT.6. Используйте
UNION ALL, если удалять дубликаты не требуется.7. Освойте оконные функции для сложных расчётов.
8. Согласовывайте типы данных, чтобы избежать неявных преобразований.
9. Сравнивайте планы для
EXISTS и IN: первый не всегда быстрее.10. Убирайте
ORDER BY, если сортировка не нужна.11. Используйте
CROSS JOIN только когда действительно нужно декартово произведение.12. Учитывайте, что функции над индексированными столбцами могут мешать использованию обычного индекса.
13. Используйте
CASE для понятной условной логики.14. Изучайте план выполнения через
EXPLAIN; помните, что EXPLAIN ANALYZE действительно выполняет запрос.15. Проверяйте корректность на небольших наборах данных, а производительность — на объёмах, близких к реальным.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Pandas: Python для повседневных задач аналитика 🐼
Загрузить файлы с неаккуратными данными, изучить их структуру, очистить столбцы, сгруппировать результаты и объединить наборы данных — всё это можно сделать с Pandas.
Библиотека помогает подготовить данные для отчётов и машинного обучения, а также получить первые аналитические выводы.
👉 @SQLPortal
Загрузить файлы с неаккуратными данными, изучить их структуру, очистить столбцы, сгруппировать результаты и объединить наборы данных — всё это можно сделать с Pandas.
Библиотека помогает подготовить данные для отчётов и машинного обучения, а также получить первые аналитические выводы.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1
Команды SQL проще запомнить по назначению
• DDL — создание и изменение структуры БД:
• DML — добавление, изменение и удаление данных:
• DCL — управление правами доступа:
• TCL — управление транзакциями:
• DQL — получение данных:
В некоторых классификациях
👉 @SQLPortal
• DDL — создание и изменение структуры БД:
CREATE, ALTER, DROP.• DML — добавление, изменение и удаление данных:
INSERT, UPDATE, DELETE.• DCL — управление правами доступа:
GRANT, REVOKE.• TCL — управление транзакциями:
COMMIT, ROLLBACK, SAVEPOINT.• DQL — получение данных:
SELECT.В некоторых классификациях
SELECT относят к DML, не выделяя DQL отдельно.Please open Telegram to view this post
VIEW IN TELEGRAM
❤3