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

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

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

Менеджер: @Spiral_Yuri
Download 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
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Продвинутый SQL-трюк: как найти строки, отличающиеся только одним символом

Иногда нужно найти пары строк, которые почти совпадают — например, из-за опечатки в одной букве. Такой кейс часто встречается при поиске дублей в именах, email или товарах.

С помощью функции levenshtein() из расширения pg_trgm в PostgreSQL, можно находить строки, отличающиеся ровно на 1 символ. Это удобно для очистки данных, поиска дублей и реализации "умного" поиска в интерфейсе.


-- Убедись, что pg_trgm расширение включено
CREATE EXTENSION IF NOT EXISTS pg_trgm;

-- Найдём строки из таблицы users, у которых name отличается на 1 символ
SELECT a.name AS name1, b.name AS name2
FROM users a
JOIN users b ON a.id < b.id
WHERE levenshtein(a.name, b.name) = 1;

-- Пример: найдёт пары вроде ('Anna', 'Anya') или ('John', 'Joan')


➡️ Больше видео

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 DuckDB vs 🐼 pandas: кто быстрее разберётся с «капризным» CSV?

➡️ Сценарий

1. pandas read_csv("flight_data.csv") → весь файл свалился в одну колонку
2. DuckDB SELECT * FROM read_csv('flight_data.csv') → автоматически подхватил разделитель и выдал аккуратные столбцы

➡️ Вывод /

Если работаете с CSV с нестандартным delimiter’ом, попробуйте прочитать его через DuckDB: детектирует разделители сам и экономит ваше время на ручной настройке.

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥Positron — новая IDE для дата саентистов

Компания Posit известна как разработчик RStudio — среды разработки, популярной среди дата саентистов и предназначенной для работы с R. Их новый проект, Positron, призван выступить как новая, более гибкая альтернатива.

⏺️Positron поддерживает работу в R и Python, предусмотрена возможность добавить и другие языки. Пока их не добавили официально, можно пользоваться сторонними расширениями — уже есть для Rust, Javascript/Typescript, C/C++ и Lua.
⏺️Главный фокус разработчиков — создать удобную среду разработки, которая за счет богатого функционала легко встраивается в рабочие процессы вне зависимости от стека и сферы деятельности. Positron позволяет писать код, изучать и анализировать данные, поддерживает ноутбуки на R и Python, запуск дата-приложени: Dash, FastAPI, Streamlit и так далее.
⏺️Надо ли говорить, что у Positron, конечно же, есть свой ИИ-ассистент?

Если верить отзывам, после 2 лет в разработке Positron все еще страдает от багов и недостатка фич, особенно по сравнению с более привычным многим RStudio, но это уже вполне рабочий и перспективный инструмент.

Он доступен бесплатно на Windows, macOS и Linux.

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
Как избежать «ИИ-пилотного болота»: опыт PepsiCo

В начале бума генеративного ИИ многие компании бросились внедрять всё подряд — и часто получали сомнительные результаты. Сегодня многие сворачивают пилоты, но у PepsiCo всё пошло иначе.

Секрет — в стратегии: максимум 4–5 ИИ-проектов одновременно, на которые идут ресурсы и эксперты. Остальное тестируется во внутренней песочнице PepGenX — запуск только после доказанной пользы для KPI.

Прогнозирование спроса
ИИ каждый день пересчитывает прогнозы, анализируя продажи, маркетинг и сотни внешних сигналов. Видит «горячие» недели до того, как они наступят.

ИИ-агенты на складах
Автоматизируют планировку хранения, подсказывают мерчандайзерам, куда выкладывать товар.

ИИ-продажники
На B2B-платформе оформляют заказы, дают клиентам данные о запасах в реальном времени, прогнозируют поставки и помогают запускать таргетированные кампании.

Разработка продуктов
ИИ сокращает запуск новинок с 6–9 месяцев до 6 недель, оптимизирует рецептуры и брендинг.

Маркетинг
Генерирует идеи, тестирует их на виртуальных респондентах и оптимизирует кампании.

Итог:
никакой гонки за хайпом — только точечные ИИ-решения, которые приносят измеримый бизнес-результат.
🔥 Полезный SQL-трюк: как получить первую строку в каждой группе — без подзапросов и оконных функций (если они недоступны)

Иногда нужно из каждой группы выбрать одну запись, например, самую раннюю по дате. Если у вас нет оконных функций (например, в старом MySQL), используйте трюк с GROUP BY и JOIN:


SELECT t1.*
FROM orders t1
JOIN (
SELECT customer_id, MIN(order_date) AS min_date
FROM orders
GROUP BY customer_id
) t2 ON t1.customer_id = t2.customer_id AND t1.order_date = t2.min_date;



➡️ Этот приём вытаскивает первую покупку каждого клиента без оконных функций.

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Семантический слой, и с чем его едят

Одно из главных препятствий на пути к внедрению в компании data-driven подхода — это то, что обычные бизнес-юзеры не понимают, как им работать с аналитикой. Не просить у аналитиков каждый раз сделать отчет или выгрузку, а самостоятельно копаться в данных и находить ответы на свои вопросы.

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

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

Конечно, нужно это не всем. Введение семантического слоя оправдано, когда:
⏺️в компании уже довольно развитая система аналитики — множество дашбордов, разные BI-платформы, пользователи из разных отделов со своими запросами и метриками,
⏺️используется сложная бизнес-логика и расчеты, а не только SUM() и AVG(),
⏺️хочется дать пользователям возможность самим писать ad hoc-запросы, не заставляя их изучать продвинутый SQL с join’ами и прочими тонкостями.

Если пока нет необходимости объединять системы и стандартизировать расчеты, тратить время на создание семантического слоя может быть нерационально.

➡️ Но если момент настал, и вы не знаете, что теперь делать, то мы нашли для вас гайд. Он объясняет процесс на довольно простом примере, но зато наглядно: с чего начать, как задать определения метрик на YAML и настроить логику работы. В конце еще и короткий FAQ добавили.

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

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Продвинутый SQL-трюк: Как одним запросом вытащить только самую последнюю запись по каждой группе — и при этом сохранить все остальные поля

Если ты хочешь, например, получить последний заказ по каждому клиенту, но у тебя нет оконных функций или ты хочешь максимально производительный запрос — вот чистый, понятный способ.

-- Найдём последнюю покупку по каждому customer_id
SELECT o.*
FROM orders o
JOIN (
SELECT customer_id, MAX(order_date) AS max_date
FROM orders
GROUP BY customer_id
) latest
ON o.customer_id = latest.customer_id
AND o.order_date = latest.max_date;

-- Работает даже если в таблице десятки миллионов строк, индекс на order_date и customer_id ускорит запрос


🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 uQLM — движок для SQL‑запросов к LLM, разработанный в CVS Health

Что если к языковой модели можно обращаться как к обычной базе данных?

uQLM (Universal Query Language for Models) позволяет писать SQL‑подобные запросы, чтобы:

⏺️ Обращаться к LLM как к таблице
⏺️ Фильтровать, агрегировать и комбинировать ответы
⏺️ Подключать собственные модели и источники данных
⏺️ Использовать привычный синтаксис SQL без prompt-инженерии

➡️ Пример запроса:

SELECT generate_response(prompt) 
FROM gpt4
WHERE prompt LIKE '%explain%'
LIMIT 5;


uQLM работает как прослойка между пользователем и языковой моделью, облегчая интеграцию ИИ в аналитические пайплайны.


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

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ 120 ключевых вопросов по SQL за 2025 год

Статья содержит 120 ключевых вопросов по SQL для собеседований, разделённых по темам и уровням сложности, с краткими пояснениями.

Основываясь на актуальных требованиях 2025 года, вопросы охватывают базу данных, оптимизацию, практические задачи и нюансы СУБД (MySQL, PostgreSQL, SQL Server).

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ Примерно 71% всех венчурных денег, вложенных в американский бизнес к 1 первому кварталу 2025 года, ушло в компании, которые аналитики J.P. Morgan отнесли к AI-сектору. И доля эта растёт по экспоненте: ещё в 2022 году она была всего 14%!

Кажется, скоро это станет базовой формулой: хочешь денег — используй ИИ. Хочется верить, что это не приведёт к созданию ИИ-проектов, где ИИ не нужен.

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
Каждый месяц — битва с бесконечными таблицами и версиями «финальной» цифры.

В какой-то момент кажется, что всё сошлось, но уверенности нет. Хватит ли вам сил и времени на этот хаос? 😓

9 сентября, на вебинаре от Дельта BI, Navicon и Денвик Аналитика вы
узнаете, как навести порядок в данных и автоматизировать процессы, чтобы стать настоящим чемпионом аналитики.

Представьте, что вы:
📍 Быстро и безопасно выгружаете данные из 1С, словно по волшебству.
📍 Объединяете таблицы Excel с другими источниками с помощью удобного low-code ELT, словно это детская игра.
📍 Создаёте дашборд в Дельта BI, который работает сам по себе, освобождая ваше время для важных дел.

Умение правильно использовать аналитику — ключ к успеху.

Это возможность быть на шаг или два впереди конкурентов, быстро реагировать на изменения рынка и принимать обоснованные решения.

🔗 Присоединяйтесь к нам! Зарегистрируйтесь по ссылке

После этого вебинара вы наконец-то скажете: «Теперь я понимаю, как сделать аналитику простой и эффективной!»🚀
This media is not supported in your browser
VIEW IN TELEGRAM
➡️Вы когда-нибудь задумывались, как лучше всего нарезать лук?

Американский шеф и писатель J. Kenji López-Alt, а затем и издание The Pudding собрали математическую модель, которая отвечает на этот вопрос. В проекте рассматриваются разные виды надрезов — вертикальные, радиальные, надрезы к воображаемой точке под луковицей: всё, чтобы получить кусочки минимально отличающиеся по размерам.

⏺️Да, в реальной жизни никто не переживает, что луковые дольки для салата получаются разного размера. Но The Pudding снова сделали шоу: все способы нарезки можно настроить и сразу посмотреть, какие кусочки получатся на выходе.

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 SQL-задача с подвохом: почему COUNT(*) считает не так, как ты думаешь?

➡️ Условие:

У тебя есть две таблицы:


users
---------
id | name
---|-----
1 | Alice
2 | Bob
3 | Charlie


orders
----------
id | user_id | total
----|---------|-------
1 | 1 | 100
2 | 1 | 200
3 | 2 | 300



Нужно вывести всех пользователей и количество их заказов, включая тех, у кого заказов нет вообще.

Ты пишешь:


SELECT u.id, u.name, COUNT(o.id) AS order_count
FROM users u
JOIN orders o ON u.id = o.user_id
GROUP BY u.id, u.name;



⏺️ Результат:


1 | Alice   | 2  
2 | Bob | 1
А где Charlie? 😡



⏺️Подвох: JOIN убирает строки без соответствий — Charlie не попадает в результат вообще.
Нужно использовать LEFT JOIN, чтобы сохранить всех пользователей.

➡️ Правильное решение:


SELECT u.id, u.name, COUNT(o.id) AS order_count
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
GROUP BY u.id, u.name;



Теперь результат:


1 | Alice   | 2  
2 | Bob | 1
3 | Charlie | 0



➡️ Вывод:

Хочешь сохранить всех из "левой" таблицы — используй LEFT JOIN. А COUNT(о.id) не считает NULL — и это хорошо: ты получаешь реальное число заказов, а не просто 1 за NULL.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
🔥SQL ТРЮК: Как выбрать первые N строк в каждой группе

Вот полезный трюк: используем функцию роз намбер с патришн бай чтобы нумеровать строки внутри каждой группы, а потом фильтруем по номеру.

Ты получишь первые два события для каждого пользователя. Можно легко адаптировать под «топ‑пять товаров в каждой категории.

Этот трюк работает в большинстве современных СУБД, поддерживающих оконные функци


sql
WITH ranked AS (
SELECT
user_id,
event_time,
event_type,
ROW_NUMBER() OVER (
PARTITION BY user_id
ORDER BY event_time ASC
) AS rn
FROM user_events
)
SELECT *
FROM ranked
WHERE rn <= 2;



⏺️Этот запрос выберет первые 2 события *по каждому пользователю*. Просто, чисто и кросс‑совместимо — работает в PostgreSQL, MySQL 8+, SQL Server и других.

➡️ https://www.youtube.com/shorts/X5CJn1eLW20

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Open-source инструмент для просмотра CSV, JSON, Excel и других таблиц прямо в терминале — без потери форматирования, аккуратно и читабельно.

Что умеет:

⏺️ Встроенный SQL-движок: фильтры, джойны и анализ прямо в терминале;
⏺️ Vim-подобные хоткеи (для фанатов, да 😁);
⏺️ Быстрый поиск, работа с несколькими таблицами, поддержка тем (Monokai, Nord и др.).

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

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ RisingLight — образовательная OLAP-база данных.

Этот проект разрабатывается как учебная реализация OLAP-системы с поддержкой SQL-запросов, включая выполнение TPC-H тестов.

Для тех, кто хочет заглянуть под капот аналитических баз данных, RisingLight предлагает отличную возможность изучить их устройство на практике. Хотя проект пока не готов для production, он уже даёт представление о ключевых компонентах СУБД: от парсера запросов до исполнителя. Сообщество активно развивается: есть Discord, Telegram и даже WeChat-чат для обсуждения. Авторы приветствуют вклад новичков и предлагают список "good first issues" для первых PR.

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

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ Продвинутая задача по SQL (Oracle): найти «бычьи серии» продаж и момент разворота

Задача
Есть таблица продаж по дням:

sales(day_date DATE, customer_id NUMBER, amount NUMBER)

Нужно для каждого клиента найти интервалы из не меньше 3 подряд идущих дней, где сумма amount строго возрастает каждый день, а на следующий день после интервала происходит разворот вниз (т.е. amount меньше, чем в последний день серии). Для каждого такого интервала вернуть:
- customer_id
- start_date, end_date серии
- length (длина серии в днях)
- last_amount (сумма в последний день серии)
- drop_amount (сумма в день разворота)
- drop_pct (процент падения относительно last_amount)

Решение (Oracle 12c+): используем MATCH_RECOGNIZE


SELECT *
FROM sales
MATCH_RECOGNIZE (
PARTITION BY customer_id
ORDER BY day_date
MEASURES
FIRST(day_date) AS start_date,
LAST(day_date) AS end_date,
COUNT(A.*) AS length,
LAST(amount) AS last_amount,
NEXT(amount) AS drop_amount,
ROUND( (LAST(amount) - NEXT(amount)) / NULLIF(LAST(amount),0) * 100, 2 ) AS drop_pct
ONE ROW PER MATCH
AFTER MATCH SKIP PAST LAST ROW
PATTERN (A{3,} D)
DEFINE
A AS ( PREV(amount) IS NULL OR amount > PREV(amount) ),
D AS amount < PREV(amount)
);



Пояснение
- PATTERN (A{3,} D) — ищем подпоследовательность из минимум трёх строго возрастающих дней A, за которой сразу идёт день падения D.
- DEFINE A — рост относительно предыдущего дня в группе клиента.
- DEFINE D — падение относительно предыдущего дня (последнего A).
- MEASURES — извлекаем границы серии и метрики, NEXT(amount) берёт сумму в день разворота.
- AFTER MATCH SKIP PAST LAST ROW — не пересекаем серии.

Бонус: защита от «лестниц» с пропусками дат
Если в данных бывают пропуски дней, а вам нужны подряд идущие даты, добавьте проверку календарной последовательности:


DEFINE
A AS ( (PREV(amount) IS NULL OR amount > PREV(amount))
AND (PREV(day_date) IS NULL OR day_date = PREV(day_date) + 1) ),
D AS ( amount < PREV(amount) AND day_date = PREV(day_date) + 1 )



Зачем так делать:

⏺️MATCH_RECOGNIZE — мощный инструмент Oracle для поиска сложных паттернов по времени (распознавание трендов, разрывов, «голова-плечи», аномалий). Он заменяет громоздкие CTE с аналитиками и делает запрос короче, быстрее и точнее при работе с последовательностями.

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
❤️ Учим SQL через захватывающую аркадную игру

Разработчики замутили настоящий олдскульный
шедевр, который сделает из вас МАСТЕРА баз данных и точно не даст заскучать.

⏺️ Проходим уровни, собираем пазлы вместе с уткой DuckDB и прокачиваем SQL на максимум.
⏺️ Квесты, задачи, подсказки — всё как в настоящем приключении.
⏺️ Работает прямо в браузере и даже на телефоне.

Любые запросы к базам — щёлкаем как семечки

➡️ https://dbquacks.com/

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
🔥 Jupyter Agent 2

Этот агент умеет:

⏺️ Загружать данные
⏺️ Запускать код
⏺️ Строить графики прямо в Jupyter — быстрее, чем вы успеете прокрутить экран!

⏺️ Основан на движке Qwen3-Coder
⏺️ Работает на Cerebras
⏺️ Запускается в E2B
⏺️ Поддерживает загрузку файлов

➡️ Попробовать можно здесь: клик

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