SQL и Анализ данных – Telegram
SQL и Анализ данных
12.5K subscribers
665 photos
62 videos
3 files
680 links
Базы данных и всё, что с ними связано!

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

РКН № 6520279766
Download Telegram
📚 Курс, который прокачает твои AI-скиллы в BigQuery

Этот курс учит работать с Gemini прямо внутри BigQuery и закрывает полный набор практических навыков:

- генерация и отладка SQL-запросов с помощью Gemini
- анализ тональности текста
- автоматические суммари и выделение ключевых слов
- генерация эмбеддингов
- построение RAG-пайплайна
- мультимодальный векторный поиск

Если хочешь уверенно использовать AI-инструменты в аналитике и продуктах — этот курс даёт полный набор необходимых умений.

https://www.skills.google/paths/1803/course_templates/1232
👍31💊1
⚡️ Бесплатный 7-часовой курс MIT по генеративному ИИ

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

Подойдёт тем, кто хочет быстро собрать цельную картину без воды.

Курс: https://www.youtube.com/playlist?list=PLXV9Vh2jYcjbnv67sXNDJiO8MWLA3ZJKR
3👍3
📊 Подробный практический гайд по статистике на Python

Этот практический гайд по статистике на Python - ваш надёжный проводник в мир анализа, визуализации и интерпретации данных.

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

🟠Гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍4🔥1
🌊 ETL на стероидах: стриминг данных Postgres в реальном времени на Rust 🦀

Supabase выкатили интересный open-source фреймворк - supabase/etl, который позволяет стримить данные из Postgres куда угодно в реальном времени.

Это набор простых, модульных Rust-блоков, из которых можно собрать собственный конвейер Change Data Capture (CDC). Вы получаете полный контроль над тем, как обрабатывать изменения в базе и куда их отправлять — без тяжёлых платформ и сложных конфигов.

Что делает этот фреймворк полезным:

- Прямой стриминг изменений из Postgres (CDC)
- Rust — значит скорость, надёжность и низкие накладные расходы
- Гибкие компоненты: можно строить свои конвейеры под любые нужды
- Подходит для интеграций, аналитики, событийных систем, real-time обновлений
- Легче и прозрачнее, чем классические ETL/ELT-платформы

По сути, это конструктор, из которого можно быстро собрать real-time data pipeline:
достал изменения из Postgres → преобразовал → отправил в Kafka, ClickHouse, S3, API — куда угодно.

Если вы работаете с потоковыми данными, аналитикой или микросервисами - стоит попробовать. Rust + CDC - это мощное сочетание для стабильных и быстрых пайплайнов.

https://github.com/supabase/etl
4👍3🔥2
🔥 Подборка полезных ресурсов для программистов.

Здесь ты найдёшь всё это - коротко, по делу и без воды.
Пока другие ищут, где “подглядеть решение”, ты уже используешь самые свежие инструменты!

AI: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Devops: t.me/DevOPSitsec
Собеседования DS: t.me/machinelearning_interview
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
Data Science: t.me/data_analysis_ml
Javanoscript: t.me/javanoscriptv
C#: t.me/csharp_1001_notes
Java: t.me/java_library
Базы данных: t.me/sqlhub
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: https://news.1rj.ru/str/gamedev
Haskell: t.me/haskell_tg
Физика: t.me/fizmat

💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://news.1rj.ru/str/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://news.1rj.ru/str/addlist/mzMMG3RPZhY2M2Iy
Папка Linux:https://news.1rj.ru/str/addlist/w4Doot-XBG4xNzYy

😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno

🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://news.1rj.ru/str/addlist/BkskQciUW_FhNjEy

Сохрани себе, чтобы не потерять!
👍2
Какой тип данных в PostgreSQL используется для хранения двоичных данных?
Anonymous Quiz
5%
A) TEXT
51%
B) BYTEA
34%
C) BLOB
10%
D) JSON
Конкурс для аналитиков! Требуется эксперт на продуктовый А/Б-эксперимент

Международная IT-компания Garage Eight вместе с Данилой Елистратовым собрали классный аналитический кейс, на котором каждый может прочелленджить свою экспертность.

История следующая — в крупном таксопарке «Датапарк» назревает кризис. Заказы поступают без остановки, но водителей не хватает. Чтобы спасти ситуацию, команда таксопарка запустила продуктовый эксперимент. Но ей нужна помощь крутого аналитика, чтобы разобраться, все ли правильно работает и стоит ли выкатывать новую механику на весь парк.

Задачи:
— убедиться, что сплит-система A/B-теста «Датапарка» работает верно;
— посчитать результаты теста и понять, выгодна ли новая механика;
— предложить способ определять отложенные заказы;
— объяснить все менеджменту на понятной презентации.

Призы (^-^):
1 место — Симулятор от Karpov.Courses на выбор: Симулятор А/B-тестов, Симулятор data science или Симулятор аналитика. А также бомбер Garage Eight.
2 место — Симулятор A/B-тестов от Karpov.Courses и бомбер Garage Eight.
3 место — Симулятор A/B-тестов от Karpov.Courses и бомбер Garage Eight.
4 и 5 место — Наборы мерча от Garage Eight

Прием решений: до 2 декабря
Проверка: с 3 декабря по 10 декабря
Объявление победителей: 11 декабря
> Узнай все детали и забери материалы кейса здесь:
https://news.1rj.ru/str/Garage_DataPark_bot

Реклама. ООО "Гараж". ИНН 7810671708.erid: 2W5zFJhHCfz
1🔥1
Трюк дня. Найти медиану

Предположим, есть таблица, содержащая в столбце sales такие записи:
2, 1, 3, 8, 7, 5.

Необходимо найти медиану для данного столбца.


Решение:
В PostgreSQL используйте функцию percentile_count:
SELECT percentile_cont (0.5) WITHIN GROUP (ORDER BY sales) FROM table;

В MS SQL также используйте функцию percentile_count:
SELECT percentile_cont (0.5) WITHIN GROUP (ORDER BY sales) OVER (PARTITION BY 1) FROM table;

В PARTITION BY можно внести столбец, по которому группируются данные. В данном случае мы использовали 1, чтобы посчитать медиану по всем данным столбца.

В Oracle используйте функцию MEDIAN:
SELECT MEDIAN (sales) OVER (PARTITION BY 1) FROM table;

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

/*задаем переменную row_index = -1, чтобы отсчет индекса начался с 0 */
SET @row_index := -1;

/*находим среднее двух значений в центре отсортированного набора. Охватывает те случаи, когда общее число записей четное*/
SELECT AVG (subq.sales) as median_value
FROM (
SELECT @row_index:=@row_index + 1 AS row_index, sales
FROM table
ORDER BY sales
) AS subq
WHERE subq.row_index
/*выбираем только значения в центре: одно если число записей нечетное и два если четное*/
IN (FLOOR(@row_index / 2) , CEIL(@row_index / 2));

Ответ: медиана = 4.

#tips
👍72
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 SQL ОПТИМИЗАЦИЯ ЧЕРЕЗ UNION ALL

Хитрый SQL-трюк, о котором мало кто знает: можно резко ускорить сложные фильтры, если вместо OR использовать UNION ALL - оптимизатор часто строит намного быстрее план выполнения.

Особенно это полезно, когда каждое условие может использовать свой индекс, а OR ломает весь индексный план. Подписывайся, больше фишек каждый день !


Медленно: OR ломает индексы
SELECT *
FROM users
WHERE status = 'active'
OR created_at > NOW() - INTERVAL '30 days';

-- Быстро: каждое условие использует свой индекс
SELECT * FROM users
WHERE status = 'active'
UNION ALL
SELECT * FROM users
WHERE created_at > NOW() - INTERVAL '30 days'
AND status <> 'active';


Видео: https://www.youtube.com/shorts/Irl3Ax6UePI
Please open Telegram to view this post
VIEW IN TELEGRAM
👍153🥰2
Что произойдет, если в PostgreSQL создать индекс с опцией INCLUDE и добавить туда столбец, который уже входит в ключ индекса?
Anonymous Quiz
20%
A) Ошибка создания индекса
18%
B) Столбец будет продублирован в индексe
50%
C) Столбец в INCLUDE игнорируется, так как он уже в ключе
12%
D) Индекс создастся, но с предупреждением
3🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 ХИТРЫЙ SQL-СОВЕТ ПО ОПТИМИЗАЦИИ ЗАПРОСОВ

Одна из самых скрытых тормозящих привычек - везде писать SELECT *. Ты тащишь лишние колонки, ломаешь использование покрывающих индексов и нагружаешь память. Гораздо эффективнее выбирать только те поля, которые реально нужны в ответе, и делать по ним составной индекс. Тогда база может обслужить запрос прямо из индекса, без чтения таблицы с диска. Подписывайся, больше фишек каждый день !


-- плохой вариант: тянем все колонки
SELECT *
FROM orders
WHERE customer_id = 42
AND status = 'PAID';

-- лучше: только нужные поля (можно сделать covering index)
SELECT id, total_amount, paid_at
FROM orders
WHERE customer_id = 42
AND status = 'PAID';
👍152💊2🔥1
🖥 SQL большой гайд. Как правильно выбрать ORM

Эта статья - не про «как написать SELECT, а про настоящую инженерную работу: принципы нормализации, дизайн схем, практики оптимизации SQL, работа с транзакциями, и главное - как выбрать и использовать ORM так, чтобы он помогал, а не мешал.

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

Готовы? Тогда начинаем строить архитектуру, которую не стыдно масштабировать.

https://uproger.com/sql-bolshoj-gajd-kak-pravilno-vybrat-orm/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥42👍2😁1
🔐 Postgresus - self-hosted инструмент для резервного копирования и мониторинга PostgreSQL базы данных

🔥 Возможности:
- создание бекапов по расписанию для PostgreSQL 13-18;
- уведомления в Telegram, Slack, Discord, если бекап сломался или база недоступна;
- хранение бекапов локально, в S3 или Google Drive;
- health check базы данных раз в минуту;
- Apache 2.0 лицензия (полностью открытый);

Запуск через Docker:
docker run -d 
--name postgresus
-p 4005:4005
-v ./postgresus-data:/postgresus-data
--restart unless-stopped
rostislavdugin/postgresus:latest


📌 GitHub
🔥7👍42
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 SQL СОВЕТ

Когда нужно взять по одному самому свежему событию на пользователя, не делай вложенные подзапросы с MAX и лишние JOIN, используй оконную функцию ROW_NUMBER по разделу и упорядочиванию, так запрос будет понятнее и часто быстрее на реальных данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥3🥱1
Self-Hosted vs Managed PostgreSQL

Облачный провайдер Cloud.ru приглашает на вебинар 9 декабря в 11:00 по мск, где честно сравнят два подхода в управлении базами данных и разберут, с какими сложностями можно столкнуться при переходе на Managed PostgreSQL и как их избежать.

В программе:
😶‍🌫️ в чем ключевые отличия в эксплуатации Self-Hosted и Managed PostgreSQL

😶‍🌫️ какие задачи полностью автоматизирует облачный провайдер, а что остается под вашим контролем даже в managed-сервисе

😶‍🌫️ как быстро развернуть отказоустойчивый кластер Managed PostgreSQL в Cloud․ru и подключить к нему тестовое приложение


А в практической части будут создавать кластер с нуля с демонстрацией всех этапов настройки и подключения.

Зарегистрироваться
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ SQL: быстрый поиск по тексту без LIKE '%...%' !!!

Если в проде ты всё ещё ищешь по тексту через LIKE '%строка%', то рано или поздно упрёшься в медленные seq scan по всей таблице.

В PostgreSQL гораздо эффективнее сразу строить полнотекстовый индекс и искать через to_tsvector`/`tsquery.

Так запросы остаются понятными, а поиск по большим текстам начинает работать в разы быстрее.




CREATE TABLE articles (
id serial PRIMARY KEY,
noscript text,
body text
);

CREATE INDEX idx_articles_fts
ON articles
USING gin (to_tsvector('russian',
coalesce(noscript,'') ' ' coalesce(body,'')));

SELECT id, noscript
FROM articles
WHERE to_tsvector('russian',
coalesce(noscript,'') ' ' coalesce(body,''))
@@ plainto_tsquery('russian', 'sql поиск производительность');
🔥63👍2
🚀 Обрабатывайте данные больше объёма RAM с автоматическим spillover в DuckDB

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

DuckDB решает проблему иначе:
он автоматически сбрасывает промежуточные данные на диск, если памяти не хватает.

Пример:


duckdb.sql("SET memory_limit = '500MB'")
duckdb.sql("SET temp_directory = '/tmp/duckdb_temp'")

result = duckdb.sql(f"SELECT * FROM '{parquet_path}'").df()


Итог:
- у вас 10GB Parquet
- оперативка только 500MB
- DuckDB сам делает чанки + сбрасывает overflow на диск
- запрос успешно выполняется

Так вы работаете с большими данными без сложных пайплайнов и апгрейда железа.
4🥰1
⚡️ SQL-совет:

Используйте filtered indexes (условные индексы) - они ускоряют выборки на больших таблицах, но мало кто о них знает.

Пример для таблицы заказов, где статус "active" запрашивается чаще всего:




CREATE INDEX idx_orders_active
ON orders(status)
WHERE status = 'active';


Плюсы:
- индекс меньше → быстрее в памяти,
- оптимизатор выбирает его при типичных запросах,
- запросы по активным записям работают значительно быстрее.

Мало кто использует условные индексы, а зря. Они умеют избавлять от лишних full scan почти бесплатно.
👍104🔥4