Data Science: SQL и Аналитика данных
28.2K subscribers
234 photos
46 videos
1 file
283 links
№ 6205468675

На простом языке: про работу с данными, современные технологии, AI, машинное обучение и, немного, SQL.

Сотрудничество: @niktwix

Менеджер: @Spiral_Yuri
Download Telegram
👀 AI + SQL = мгновенный доступ к данным в базе

На картинке — простой пример, как с помощью FastMCP и SQLAlchemy можно подключить инструмент к базе данных, который по человеческому запросу выводит список всех таблиц.

➡️ Что происходит:

1️⃣Человек пишет: *"Show me all tables in the ecommerce database"*
2️⃣AI вызывает list_tables(), получает список через SQLAlchemy
3️⃣Возвращается JSON и сгенерированный ответ на естественном языке

Используемые технологии:
⏺️ FastMCP — для регистрации инструментов и взаимодействия с агентами
⏺️ @mcp.tool — декоратор, позволяющий превращать функции в доступные действия для ИИ
⏺️ inspect() из SQLAlchemy — безопасный способ получить метаданные БД

🔥 Это база для создания умных ботов-помощников, которые умеют работать с реальными базами данных и выдавать ответы, понятные человеку.

Интерфейс будущего уже здесь — не SQL-запрос, а обычный вопрос на английском.

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥Огромная Python-шпаргалка с удобной навигацией!

В репозитории собраны шпаргалки (на русском) по Python и не только, разделённые по категориям. Каждая ссылка ведёт к PDF с нужной темой.

Кроме Python, есть материалы по Git, CORS, Docker, API, SQL, CI/CD, Kubernetes и другим темам разработки.

➡️ https://github.com/Dv-nn/Cheat-Sheet-Python

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Хитрая SQL-задача: вторая покупка в течение 7 дней

У вас есть таблица purchases:

purchases (
id SERIAL PRIMARY KEY,
customer_id INT,
purchase_date DATE,
amount NUMERIC
)



➡️ Задача:
Найти всех клиентов, у которых вторая покупка произошла не позднее, чем через 7 дней после первой.

Показать:

⏺️ customer_id
⏺️ first_purchase_date
⏺️ second_purchase_date

➡️ Решение:

WITH ordered_purchases AS (
SELECT
customer_id,
purchase_date,
ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY purchase_date) AS rn
FROM purchases
),

first_second_purchases AS (
SELECT
p1.customer_id,
p1.purchase_date AS first_purchase_date,
p2.purchase_date AS second_purchase_date
FROM ordered_purchases p1
JOIN ordered_purchases p2
ON p1.customer_id = p2.customer_id
AND p1.rn = 1
AND p2.rn = 2
)

SELECT *
FROM first_second_purchases
WHERE second_purchase_date <= first_purchase_date + INTERVAL '7 days';



➡️ Пояснение:

⏺️ ROW_NUMBER() присваивает каждой покупке порядковый номер в рамках клиента.
⏺️ Через self-join соединяем первую и вторую покупку клиента.
⏺️ Далее фильтруем, оставляя только те, у кого вторая покупка была не позднее 7 дней после первой.

➡️ Важно:

⏺️ Клиенты с одной покупкой исключаются — у них нет второй.
⏺️ Мы не ищем любые две покупки в пределах 7 дней, а только первую и вторую по порядку.
⏺️ INTERVAL '7 days' обеспечивает корректное сравнение дат.

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Customer Orders — пример схемы базы данных от Oracle

Примерная схема Customer Orders (CO) моделирует систему управления заказами в розничной торговле. Подходит для обучения, тестов и демонстрации возможностей Oracle Database.

Основные особенности:

⏺️ Хранение товаров с описанием в JSON
⏺️ Учёт заказов, клиентов, магазинов и отправок
⏺️ Поддержка офлайн и онлайн-продаж
⏺️ Использование современных SQL-возможностей

Таблицы:

⏺️ products — товары, цены, JSON-описание и изображения
⏺️ customers — покупатели с ID, именем и email
⏺️ orders — заказы с датой, статусом и привязкой к магазину
⏺️ order_items — позиции в заказе, количество, цена, доставка
⏺️ stores — физические и онлайн-точки продаж
⏺️ shipments — информация об отправке товара

Схема отражает типичный розничный бизнес-процесс и показывает, как можно сочетать структурированные данные и JSON в Oracle DB.

➡️ Github

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
➡️ Выбираем базу данных правильно

В мире разработки выбор БД — ключ к производительности, масштабируемости и эффективности. Это не просто SQL vs NoSQL, а поиск инструмента под данные, нагрузку и цели бизнеса. От IoT до ИИ — тип не важен, важна задача. Разбираем:

➡️ SQL:

⏺️ Структурированность, ACID, надёжность.
⏺️ Для: финансы, CRM, ERP.
⏺️ Примеры: MySQL, PostgreSQL.

➡️ NoSQL:

⏺️ Document DB: JSON/XML (MongoDB, Couchbase).
⏺️ Key-Value: быстрый доступ (Redis, DynamoDB).
⏺️ Columnar: аналитика (Cassandra, Redshift).
⏺️ Graph DB: связи (Neo4j, Cosmos DB).

➡️ Специализированные

⏺️ Time-Series: метрики, IoT (InfluxDB, TimescaleDB).
⏺️ Vector DB: ИИ, поиск (Milvus, Pinecone).
⏺️ Spatial DB: карты (PostGIS, Oracle Spatial).

➡️ Высокая производительность

⏺️ In-Memory: скорость (SAP HANA, MemSQL).
⏺️ NewSQL: масштаб + SQL (Spanner, CockroachDB).

➡️ Нишевые

⏺️ Blockchain DB: доверие (BigchainDB).
⏺️ Object-Oriented: кодовая структура (ObjectDB).

БД — это про масштабируемость, интеллект и гибкость. Выбирайте под задачу, а не по привычке.

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥Задача: “Невидимая строка”

Дана таблица users:

CREATE TABLE users (
id SERIAL PRIMARY KEY,
name TEXT,
deleted_at TIMESTAMP
);



Вы выполняете:

SELECT COUNT(*) FROM users WHERE deleted_at = NULL;


И получаете... 0. Хотя вы уверены, что есть пользователи, у которых deleted_at не задано.

➡️ Вопрос:

Что не так с запросом? Как правильно получить количество “неудалённых” пользователей?

Вопрос: В чем ошибка? И как надо правильно писать такой фильтр?

⏺️ Правильный запрос будет выглядеть так:

Чтобы проверить, является ли значение NULL, нужно использовать специальный оператор IS NULL.

SELECT COUNT(*) FROM users WHERE deleted_at IS NULL;

Этот запрос корректно найдёт все строки, где в столбце deleted_at действительно отсутствует значение (т.е. он равен NULL), и посчитает их количество.

Итог:
Не используйте = или != для сравнения с NULL.
Используйте IS NULL для проверки на NULL.
Используйте IS NOT NULL для проверки на не NULL (если бы вам понадобилось посчитать удалённых пользователей, у которых deleted_at заполнено).
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 BRModelo Web — веб-приложение для проектирования баз данных.

Этот open-source проект позволяет создавать ER-диаграммы прямо в браузере с экспортом в SQL-скрипты.

Инструмент имеет образовательную направленность. Интерфейс на португальском и английском языках адаптирован для учебных задач: есть подсветка сущностей, автоматическая расстановка связей и валидация схемы. Запустить локальную копию можно через Node.js + MongoDB или Docker-контейнеры.

➡️ Посмотреть на GitHub

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Гайд: как создавать дата-продукты

Дата-продукты — это дашборды, отчеты, таблицы и вообще все, что помогает извлекать инсайты из данных. Любой, кто хоть раз делал верстал дашборд или просто делал табличку в Google Sheets знает, насколько это сложная и порой неблагодарная работа.

Данные постоянно меняются и обновляются, их объемы растут, а пайплайны становятся сложнее. Добавляется и человеческий фактор, потому что у каждого дата-продукта — разные владельцы и пользователи, со своими требованиями, ожиданиями и подходами к работе с данными. Все это надо учитывать, чтобы делать продукты, которые реально приносят пользу, а не просто существуют для галочки.

Ну и как это сделать?

Как вариант — обратиться к специальному гайду. Есть короткая версия в виде поста в сабстаке, где предлагают разделить этот процесс на 5 шагов:
1️⃣Определите юзкейсы для своих дата-продуктов и опишите, как пользователь будет работать с данными.
2️⃣Опишите зоны ответственности и расставьте приоритеты.
3️⃣Разработайте стратегию тестирования и мониторинга.
4️⃣Устраняйте ошибки и проблемы, о которых сообщают пользователи.
5️⃣Отслеживайте метрики и развивайте продукт с опорой на данные.

И именно в таком порядке. Это важно!

➡️ Для тех, кто хочет подробностей, есть pdf на 69 страниц, где каждый пункт раскрыт отдельно. Авторы рассказали про классификацию дата-продуктов, объяснили, как расставить приоритеты и определить метрики, а также составить ту самую стратегию тестирования, избежав типичных ошибок.

Документ основательный и при этом универсальный — он описывает общие подходы и принципы, которые каждый сможет примерить на себя, вне зависимости от деталей вроде стека, размера команды или типов данных.

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥Погода реально влияет на ваши траты. Аналитики центрального университета изучили миллионы транзакций клиентов в Москве и выяснили:

➡️ В хорошую погоду
— транзакций больше, но средний чек ниже;
— люди уходят из онлайна в офлайн: +2% покупок в магазинах, −1,3% онлайн. Маркетологи, сигнал вам: курсы лучше продавать, когда холодно и дождь 🌚;
— активно растет спрос на автоуслуги (+22%), аренду электросамокатов (+15%) и алкоголь (+6% в алкомаркетах и +7% в барах).

➡️ В плохую погоду
— кинотеатры собирают больше зрителей: +9% зимой и +8% летом;
— спрос смещается в интернет
— средний чек на автоуслуги выше: спрос смещается в сторону более дорогостоящего ремонта

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ Самые обсуждаемые базы данных на Hacker News

Hacker News — новостной сайт, где постят обо всем по чуть-чуть, но в основном про ИТ. И именно в ИТ-сообществе он очень популярен, поэтому по нему можно отслеживать некоторые тренды индустрии. Это может быть полезно, если хотите быть в курсе, какие фреймворки и инструменты сейчас востребованы, а какие уходят в прошлое.

На иллюстрации к посту — график с частотой упоминаний разных БД и СУБД в заголовках новостей на HN.

Это только его «хвост» — полная версия, созданная на основе 1,8 млн постов, охватывает период с 2007 года по 2025. В оригинальной статье, кроме графика (там он интерактивный, кстати), есть еще и несколько таблиц с данными о количестве комментариев и анализом динамики.
⏺️Среди всех БД предсказуемо выделяется PostgreSQL. Причем про него не просто часто пишут — под новостями про эту СУБД и активности всегда много.
⏺️Больше всего комментариев написано про PostgreSQL (просто потому что и постов по него больше всего), но самые обсуждаемые новости с самыми активными обсуждениями — про SQLite.
⏺️ClickHouse с маленькой, но гордой DuckDB быстрее всех остальных набирают популярность.
⏺️MongoDB и MySQL, наоборот, упоминаются в новостях все реже и реже.

В общем, получается, что самой большой популярностью пользуются open-source и аналитические хранилища, а вот проприетарные тулы вызывают меньше интереса.

Как вам график? Увидели что-нибудь неожиданное для себя?

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️Уже завтра в 15:00 (МСК) состоится эфир:
NO-CODE на помощь: решаем задачи за пределами стандартных отчётов 1С

На вебинаре:
🟣 поговорим, как сделать отчетность из 1С простой и прозрачной;
🟣 разберем актуальность нестандартных отчетов в «1С», кому и зачем это нужно;
🟣 покажем простую и быструю выгрузку из «1С» в AW BI через NO-CODE;
🟣 продемонстрируем на реальных примерах, как можно налету сформировать понятную и красивую визуализацию сформированных данных.

🔗 Регистрируйтесь, если ещё не успели — не тяните, встречаемся уже завтра!

https://aw-bi.ru/company/events/awbi-denvik-nocode?utm_source=telegram&utm_medium=promo&utm_campaign=awnews%7Cawbi-denvik-nocode
This media is not supported in your browser
VIEW IN TELEGRAM
Очаровательный анимированный проект (и потрясающий пример научпоп визуализации!) про зоонозы: инфекционные заболевания, которые передаются от животных к человеку

Исследователи изучили австрийскую литературу с 1975 по 2022 год, нашли там упоминания зоонозов, классифицировали их по видам, частоте упоминаний и способу передачи.

Особенно интересно разглядывать граф передачи болезней и узнавать, как и от чего можно заразиться. Правда, впечатлительным зрителям после просмотра может расхотеться тесно контактировать с животными, есть мясо или пользоваться общественными туалетами.

➡️ https://vis.csh.ac.at/zoonotic-web/
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻 Команда VK HR Tek разработала КЭДО — систему электронного кадрового документооборота, которая начиналась как внутренний сервис, а сегодня используется в крупнейших компаниях страны: от «Газпром нефти» до «Золотого яблока».

⚙️ Система автоматизирует подписание документов, оформление отпусков и командировок, защищает от просрочек, интегрируется с 1С, SAP и БОСС-HRM. Данные хранятся в Tier 3 ЦОДах, используется HTTPS и метки времени.

📌 В статье рассказывается, как КЭДО превратился из пилота внутри VK в лидера рынка кадровых решений
800+ SQL Server Interview Questions and Answers .pdf
1 MB
➡️ Нашли кладезь знаний из 800+ SQL-вопросов с задачами — идеально для подготовки к собеседованиям.

Подойдёт, чтобы:

— прокачать SQL-навыки с нуля до продвинутого уровня
— быстро освежить синтаксис перед интервью
— попрактиковаться на реальных задачах

Полезно как джунам, так и мидлам. Отличный способ проверить себя и закрыть пробелы.

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 SQLModel — удобное решение для работы с базами данных в Python, объединяющее силу SQLAlchemy и валидацию Pydantic.

Проект устраняет главную боль разработчиков: необходимость дублировать модели для БД и API.

Инструмент имеет синтаксис на основе аннотаций типов. Один класс одновременно описывает таблицу в БД и схему для FastAPI, а встроенная поддержка IDE сразу подсказывает поля и выявляет ошибки. Например, модель Hero с полями name и secret_name готова к использованию и в миграциях, и в эндпоинтах без лишнего кода.

➡️ Посмотреть на GitHub

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥Пятиминутка ИТ-истории

А вы когда-нибудь задумывались, почему функции вызывают? Это выражение используется, кажется, применительно ко всем языкам программирования, где вообще есть функции, которые можно вызывать. Оно стало таким привычным, что многие вряд ли задумываются, откуда оно взялось. Очевидно, что в русский язык выражение пришло из английского, а откуда там появилось «call function»?

➡️ История термина начинается с XIX веке — но с изысканий Ады Лавлейс, а в библиотеке. В 1876 году в Oxford English Dictionary впервые упоминается термин call number — номер, под которым книга значится в библиотечном каталоге.

➡️ После этого первые упоминания «вызова» и «библиотеки» подпрограмм встречаются в 1947 в статье Preparation of problems for EDVAC-type machines:
[…] the position in the memory at which arguments are placed can be standardized, so that whenever a subroutine is called in to perform a calculation, the subroutine will automatically know that the argument which is to be used is at a specified place.
[…] Some of them might be written out in a handbook and transferred to the coding of the problem as needed, but those of any complexity presumably ought to be in a library — that is, a set of magnetic tapes in which previously coded problems of permanent value are stored.

[…] позицию в памяти, где размещаются аргументы, можно стандартизировать так, чтобы при вызове подпрограммы для выполнения вычислений она автоматически знала, что необходимый аргумент находится в определенном месте.
[…] Некоторые из них можно было бы записать в справочник и вручную вставлять в код по необходимости, но более сложные следует хранить в библиотеке — то есть в наборе магнитных лент с закодированными задачами.


Возможность вызвать подпрограмму для выполнения какой-то функции упоминается еще в нескольких других источниках середины прошлого века — например, в мануале FORTRAN II от 1958 года:
Each [CALL statement] will constitute a call for the defining subprogram, which may carry out a procedure of any length or complexity […] [The CALL] statement causes transfer of control to the subroutine NAME and presents the subroutine with the arguments, if any, enclosed in parentheses.

Каждый [оператор CALL] производит вызов определенной подпрограммы, которая может выполнить операцию любой длины и сложности […] Оператор CALL передает управление подпрограмме с указанным именем и передает ей аргументы, заключенные в скобки.


Также он подчеркивает, что хотя слово «вызов» применительно к подпрограммам используется регулярно, целиком знакомое нам выражение «вызвать подпрограмму» встречается в 1961 в документе Burroughs Algebraic Compiler:
The ENTER statement is used to initiate the execution of a subroutine (to call a subroutine).

Оператор ENTER используется, чтобы начать выполнение подпрограммы (то есть чтобы вызывать подпрограмму).


Вот такая ИТ-лингвистика. А вы знали историю термина? 👀

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 LLM AutoEval — это проект, предлагающий простой способ бенчмаркинга LLM через Colab-блокнот, избавляя разработчиков от рутинной настройки тестовых сред. Достаточно указать название модели, выбрать benchmark и GPU — система сама развернёт инфраструктуру через RunPod и запустит оценку.

Система автоматически публикует результаты в формате GitHub Gist с возможностью сравнения с популярными моделями через интеграцию с YALL — альтернативным рейтингом языковых моделей. Для работы потребуются только API-токены RunPod и GitHub.

➡️ Посмотреть на GitHub

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
Автоматизация отчётов с Python и API – с нуля до первых результатов

Представьте ситуацию: в пятницу после работы звонит в панике руководитель маркетинга — в понедельник встреча с инвесторами, а сводка по рекламным кампаниям не готова. Данные разбросаны по Google Ads, Yandex.Direct и внутренней CRM.
Раньше это означало 3–4 часа ручного копирования и сведение в Excel с поиском ошибок — стресс для всех. Но всё меняется, когда вы умеете автоматизировать этот процесс.

На предстоящем 12 августа в 19:00 (МСК) вебинаре Александр Грудинин, Lead Data Analyst в AdTech Holding и ментор курса «Аналитик данных», пошагово расскажет и покажет, как с помощью Python и API сервисов можно решать такие задачи быстро и эффективно:

🟠Как подключаться к API Google Ads, Yandex.Direct и CRM через библиотеку и получать структурированные данные.
🟠Как превращать «сырые» ответы в удобные для анализа таблицы.
🟠Как создавать наглядные отчеты и графики динамики трафика и экспортировать результаты.


Почему это важно для новичков?
Увидите "кухню" реальной аналитики, поймёте логику работы с данными – от запроса к API до готового отчёта, а также получите навык, который выделит вас среди других начинающих аналитиков.

Чем раньше вы научитесь автоматизировать рутину – тем быстрее начнёте расти в аналитике.

🕗 12 августа в 19:00 по МСК

😶Регистрируйтесь сейчас — вебинар будет максимально практическим!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Self-Hosted AI Starter Kit — это готовый набор инструментов для развертывания собственных AI-решений с использованием n8n, платформы для автоматизации рабочих процессов!

Он включает преднастроенные потоки для интеграции моделей ИИ, таких как OpenAI, Ollama и другие, позволяя управлять данными и автоматизировать процессы без необходимости использования облачных сервисов. Решение идеально подходит для бизнеса и индивидуальных разработчиков.

Лицензия: Apache-2.0

➡️ Посмотреть на Github

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Nhost — свежий взгляд на backend-разработку с открытым исходным кодом.

Этот проект предлагает готовую облачную платформу или возможность самому развернуть альтернативу Firebase, но с GraphQL и PostgreSQL под капотом. Вместо NoSQL — привычный SQL, вместо REST — мощный GraphQL API на базе Hasura, а также встроенные аутентификация, хранилище и serverless-функции.

При этом Nhost не привязывает разработчика к конкретному фронтенд-фреймворку. Один и тот же SDK работает с React, Vue, Next.js и даже Flutter. Локальная разработка упрощена благодаря CLI, а для продакшна можно выбрать как managed-решение от создателей, так и развернуть всё на своих серверах через Docker.

➡️ Посмотреть на GitHub

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥Ютубер сохранил PNG в скворце

Мы уже рассказывали про хранение данных на бумаге и в черно-белых видео с помехами, но недавно обнаружилось еще более оригинальное хранилище — скворец. Точнее, песня скворца.

Ютубер Бенн Джордан выложил видео, где рассказал, как записывал и анализировал песни разных птиц. Одной из этих птиц стал скворец по имени Рот (или Mouth), который всю жизнь прожил с людьми и научился имитировать окружающие его звуки вроде щелчка камеры или человеческих голосов.

➡️ Джордан нарисовал картинку с птичкой ☝🏻 Он обработал в спектральном синтезаторе, чтобы представить ее в виде звука и проиграл ее скворцу. Тот добавил этот звук в свою «библиотеку» и несколько раз вполне точно воспроизвел. Настолько точно, что картинка нарисовалась на спектрограмме, пусть и с некоторыми творческими допущениями.

➡️ То есть скворец успешно и почти без потерь сохранил и воспроизвел 176 КБ данных — именно столько весила оригинальная картинка. Конечно, это не самый удобный и надежный способ хранения данных, но чисто теоретически рабочий.

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM