🚀 SQL-хак: как проверить любой запрос без таблиц и админских прав за 5 секунд
Представьте ситуацию: вы пишете сложный SQL-запрос. Возможно, там хитрый CASE WHEN или другой хитрый код. Но таблицы, с которыми вы работаете, огромные, тестовой среды нет, а админские права на создание временных таблиц — отсутствуют. Как проверить, что ваш кусок кода вообще работает, не дожидаясь часа, пока выполнится запрос на 100М строк? 😨
В Python мы просто открываем консоль, накидываем тестовые данные в список и проверяем функцию. А в SQL?
Есть решение:
SQL позволяет "создать" временную таблицу прямо внутри запроса, используя оператор VALUES. Это мгновенно, не требует никаких прав и не оставляет следов в базе.
Как это работает:👨💻
Допустим, нам нужно проверить, как поведет себя CASE WHEN с разными статусами.
Что здесь происходит:✅
• VALUES (...): Мы передаем список кортежей, где каждый кортеж — это одна строка нашей "виртуальной" таблицы.
• AS t(id, status): Мы даем этому набору данных имя t (как будто это таблица) и присваиваем имена колонкам: id и status.
• FROM (...) as t: Теперь к этому "набору данных" можно обращаться как к обычной таблице t, джойнить, применять оконные функции, фильтровать — все, что угодно!
Итог:🤩
Оператор VALUES — это как маленькая песочница для SQL-разработчика. Позволяет мгновенно проверить любую SQL-логику, изолировать ошибку и быть уверенным в своем коде, прежде чем запускать его на "боевых" данных. Must-have для каждого, кто ценит свое время!
❤️ Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)
❓ Знали об этом трюке? Или тоже мучались, создавая временные таблицы? Делитесь в комментариях! 👇
✔️ Подпишитесь на канал, чтобы не пропустить следующие хаки.
🚬 Делаю резюме, которые превращаются в офферы: mentor.dima-sqlit.ru
@dima_sqlit
Представьте ситуацию: вы пишете сложный SQL-запрос. Возможно, там хитрый CASE WHEN или другой хитрый код. Но таблицы, с которыми вы работаете, огромные, тестовой среды нет, а админские права на создание временных таблиц — отсутствуют. Как проверить, что ваш кусок кода вообще работает, не дожидаясь часа, пока выполнится запрос на 100М строк? 😨
В Python мы просто открываем консоль, накидываем тестовые данные в список и проверяем функцию. А в SQL?
Есть решение:
оператор VALUES! 🤩
SQL позволяет "создать" временную таблицу прямо внутри запроса, используя оператор VALUES. Это мгновенно, не требует никаких прав и не оставляет следов в базе.
Как это работает:
Допустим, нам нужно проверить, как поведет себя CASE WHEN с разными статусами.
-- Создаем "виртуальную" таблицу прямо на лету!
SELECT
t.id,
t.status,
CASE
WHEN t.status = 'approved' THEN '✅ Одобрено'
WHEN t.status = 'pending' THEN '⏳ В ожидании'
ELSE '❌ Отклонено'
END as status_text
FROM (
VALUES
(1, 'approved'),
(2, 'pending'),
(3, 'rejected'),
(4, 'approved'),
(5, 'unknown')
) as t(id, status);
Что здесь происходит:
• VALUES (...): Мы передаем список кортежей, где каждый кортеж — это одна строка нашей "виртуальной" таблицы.
• AS t(id, status): Мы даем этому набору данных имя t (как будто это таблица) и присваиваем имена колонкам: id и status.
• FROM (...) as t: Теперь к этому "набору данных" можно обращаться как к обычной таблице t, джойнить, применять оконные функции, фильтровать — все, что угодно!
Итог:
Оператор VALUES — это как маленькая песочница для SQL-разработчика. Позволяет мгновенно проверить любую SQL-логику, изолировать ошибку и быть уверенным в своем коде, прежде чем запускать его на "боевых" данных. Must-have для каждого, кто ценит свое время!
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29 10🐳6❤🔥2
🎙 Handy: как превращать голос в текст и не терять гениальные идеи:
Бывает так: сидишь, пилишь сложную задачу или пишешь код, и тут в голову пришла гениальная идея по другому проекту или пришел инсайт, как пофиксить старый баг.
Обычно в этот момент мы либо бросаем текущую задачу и лезем записывать (теряя фокус), либо надеемся на память (и благополучно забываем всё через 5 минут). Печатать текст руками — это долго и часто лень, особенно когда ты «в потоке».
Решение: Handy. Это бесплатная утилита (работает она на основе Whisper от OpenAI) которая позволяет мгновенно превратить голос в текст, не отрываясь от работы. 🚀
👨💻 В чем киллер-фича для продуктивности:
1️⃣ Мгновенный ввод: Зажимаем Ctrl + Пробел (дефолтный хоткей в Handy), наговорили мысль, как только закончили отжимаем Ctrl + Пробел и Handy транскрибирует голос и сразу вставляет текст в активное поле (IDE, мессенджер, заметки).
2️⃣ Сохранение контекста: Вы тратите 5 секунд на то, чтобы «выгрузить» идею из головы, и тут же продолжаешь работать над основной задачей. Время на написание текста не тратится вообще
3️⃣ Программа всегда работает в фоне и не мешает вашим основным задачам.
🤖 Идея для мощного воркфлоу: Суммаризация через LLM
Я использую Handy, чтобы быстро «сливать» поток сознания в одну заметку в течение дня. А вечером делаю следующее:
Собираю все записанные за день мысли в один блок.
• Закидываю их в нейронку (ChatGPT/Claude).
• Прошу: «Суммаризируй эти идеи и преврати их в список задач или структуру для постов».
• Это позволяет освободить голову для работы прямо сейчас, зная, что ни одна деталь не потеряется и будет обработана позже.
Где забрать Handy:🔥
Рекомендую попробовать всем, кто ценит свое время и хочет ускорить процесс формализации идей.
• 📂 Исходники на GitHub — если хотите посмотреть, как всё устроено внутри.
• 🌐 Официальный сайт Handy — здесь можно изучить подробности и скачать программу.
Итог:🤩
❤️ Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)
❓ А вы пробовали накидывать идеи голосом, а потом «скармливать» их нейронке для структуры? Делитесь опытом в комментариях! 👇
✔️ Подпишитесь на канал, чтобы не пропустить следующие хаки.
🚬 Провожу консультации, подробности по ссылке: mentor.dima-sqlit.ru
@dima_sqlit
Бывает так: сидишь, пилишь сложную задачу или пишешь код, и тут в голову пришла гениальная идея по другому проекту или пришел инсайт, как пофиксить старый баг.
Обычно в этот момент мы либо бросаем текущую задачу и лезем записывать (теряя фокус), либо надеемся на память (и благополучно забываем всё через 5 минут). Печатать текст руками — это долго и часто лень, особенно когда ты «в потоке».
Решение: Handy. Это бесплатная утилита (работает она на основе Whisper от OpenAI) которая позволяет мгновенно превратить голос в текст, не отрываясь от работы. 🚀
👨💻 В чем киллер-фича для продуктивности:
🤖 Идея для мощного воркфлоу: Суммаризация через LLM
Я использую Handy, чтобы быстро «сливать» поток сознания в одну заметку в течение дня. А вечером делаю следующее:
Собираю все записанные за день мысли в один блок.
• Закидываю их в нейронку (ChatGPT/Claude).
• Прошу: «Суммаризируй эти идеи и преврати их в список задач или структуру для постов».
• Это позволяет освободить голову для работы прямо сейчас, зная, что ни одна деталь не потеряется и будет обработана позже.
Где забрать Handy:
Рекомендую попробовать всем, кто ценит свое время и хочет ускорить процесс формализации идей.
• 📂 Исходники на GitHub — если хотите посмотреть, как всё устроено внутри.
• 🌐 Официальный сайт Handy — здесь можно изучить подробности и скачать программу.
Итог:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16❤🔥9🐳4
В мире дата-инжиниринга Airflow — это стандарт. Но часто бывает так: вам нужно просто запускать один SQL-скрипт или Python-парсер раз в день. Вы идете к дата-инженерам, а там: «Создай тикет, подожди аппрува в GitLab, пропиши DAG, дождись деплоя...».
Иногда проще и быстрее вспомнить про дедовский, но рабочий метод — Crontab.
Почему все топят за Airflow?
Airflow — это мощный оркестратор, и он крут, когда:
• У вас сложные зависимости (скрипт Б должен упасть, если не отработал скрипт А).
• Нужен красивый UI, чтобы следить за статусами.
• Нужна встроенная отчетность и легкий перезапуск.
• И так далее.....
Но если ваша задача — «просто запусти этот скрипт в 8 утра», Airflow может стать лишним бюрократическим барьером.
Crontab: быстро и просто
Crontab — это встроенный в Linux планировщик задач. Его главный плюс: автономия. Вам не нужно ждать деплоя или одобрения всей команды инженеров.
Как это работает:
Вы заходите на сервер и одной строчкой в терминале прописываете расписание. Например:
0 8 * * * python3 /path/to/your_script.py
(Запуск каждый день в 08:00)
«А как же логи и алерты?» — спросите вы. ✅
• Да, у Cron нет UI, но это решается парой строк кода:
• Логирование: Просто дописываем в скрипт базовый logging или сохраняем вывод в .txt файл.
• Алерты: Пишем простенькую функцию, которая в блоке except кидает сообщение об ошибке вам в Telegram-бота (как написать просто бота для Telegram смотрите в моем посте)
Итог:
Airflow придуман не просто так, и для больших систем он незаменим. Но если вам нужно быстро и просто запустить автоматизацию здесь и сейчас, не бойтесь использовать Crontab.
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥10❤🔥3🐳1 1
Сейчас такое время, что не использовать нейронки — это значит быть на несколько шагов назад. Все вокруг говорят про платные подписки, Cursor, Claude, Gemini или ChatGPT Plus, но не все готовы выкладывать по $20 в месяц просто «на попробовать».
Хорошая новость в том, что сейчас можно вайбкодить абсолютно бесплатно. Например, есть топовая модель от Китайцев — Qwen3-coder-next. Она заточена именно под кодинг и SQL, и по тестам выдает результаты не хуже топовых платных моделек.
Почему это нужно изучать прямо сейчас:
🔹 Порог входа: Можно бесплатно протестировать технологию и понять, «твоё» это или нет.
🔹 Рынок: Навык работы с AI становится актуальным (можно посмотреть тренд иностранных компаний, да и на нашем рынке бигтехи дают своим сотрудникам возможность пользоваться нейронками).
🔹 Скорость: То, что раньше гуглилось и делалось 30 минут, теперь пишется за 30 секунд.
Как всё это пощупать самому?
Если ты хочешь разобраться, как это работает, как всё настроить и не платить ни копейки — я нашёл отличное видео. Там по полочкам раскладывают, как поставить модель, как её тестировать и на что она реально способна в боевых условиях.
Итог:
Не обязательно сразу покупать дорогие подписки. Сейчас идеальный момент, чтобы запрыгнуть в тему нейросетей через мощные бесплатные инструменты. Попробуйте, посмотрите видео.
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22❤🔥7🐳5
🏠 IT-ипотека и личные финансы: как управлять деньгами, когда вписался в крупную покупку:
Не так давно я взял IT-ипотеку (да-да, об этом будет отдельная серия постов). В такие моменты мозг невольно переключается в режим усиленного контроля: начинаешь внимательнее следить за тратами и активнее искать новые источники дохода. 💸
Круто, когда есть у кого перенять опыт. Для меня таким опытом является канал Наташи — она раскладывает по полочкам не только IT-будни, но и финансовую грамотность. Если хотите привести свои счета в порядок, рекомендую начать с этих постов:
Топ материалов по финансам:🔵
1️⃣ Как следить за своими доходами — база для тех, кто хочет понимать, куда уходят деньги.
2️⃣ Сколько можно заработать на вкладах — реальные цифры и личный опыт.
3️⃣ Самые простые источники доп. дохода — как заставить ресурсы работать на вас.
Кстати, Наташа тоже недавно прошла через квест с IT-ипотекой. Можете почитать её историю, пока я готовлю свою:
📌 Айти-ипотека: Часть 1
📌 Айти-ипотека: Часть 2
Итог:🤩
Управление финансами — это такой же хард-скилл, как SQL или Python. Чем раньше начнете его прокачивать, тем спокойнее будете чувствовать себя при любом курсе валют или ипотечной ставке.
@dima_sqlit
Не так давно я взял IT-ипотеку (да-да, об этом будет отдельная серия постов). В такие моменты мозг невольно переключается в режим усиленного контроля: начинаешь внимательнее следить за тратами и активнее искать новые источники дохода. 💸
Круто, когда есть у кого перенять опыт. Для меня таким опытом является канал Наташи — она раскладывает по полочкам не только IT-будни, но и финансовую грамотность. Если хотите привести свои счета в порядок, рекомендую начать с этих постов:
Топ материалов по финансам:
Кстати, Наташа тоже недавно прошла через квест с IT-ипотекой. Можете почитать её историю, пока я готовлю свою:
📌 Айти-ипотека: Часть 1
📌 Айти-ипотека: Часть 2
Итог:
Управление финансами — это такой же хард-скилл, как SQL или Python. Чем раньше начнете его прокачивать, тем спокойнее будете чувствовать себя при любом курсе валют или ипотечной ставке.
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🐍 Рабочий кейс: как декораторы спасают мои выгрузки данных:
У нас на проекте данные постоянно перекладываются из одной СУБД в другую почти в режиме реального времени и если попасть на этот момент во время выгрузки, то выпадает ошибка и приходится перезапускать скрипт, а что если нужно выгрузить большой объема данных? Сидеть, смотреть и ручками все контролировать не наш вариант👨💻
Чтобы не обкладывать каждую функцию громоздкими
Посмотрим на максимально простой пример:
Что здесь происходит на самом деле?
Многие думают, что
Ваша функция
Давайте так:💯
Если под этим постом наберем 50 реакций, я выложу в комментарии свою реальную рабочую версию декоратора с этого кейса. Там настроено количество попыток, время ожидания между ними.
Итог:🤩
❤️ Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)
❓ А какой самый непонятный момент в декораторах для вас? Попробуем разобрать в комментариях!👇
✔️ Подпишитесь на канал, чтобы не пропустить следующие хаки.
🚬 Провожу обучение и консультации: mentor.dima-sqlit.ru
@dima_sqlit
У нас на проекте данные постоянно перекладываются из одной СУБД в другую почти в режиме реального времени и если попасть на этот момент во время выгрузки, то выпадает ошибка и приходится перезапускать скрипт, а что если нужно выгрузить большой объема данных? Сидеть, смотреть и ручками все контролировать не наш вариант
Чтобы не обкладывать каждую функцию громоздкими
try-except и не перезапускать всё руками, я использую декораторы. Давайте разберемся, что такое декораторы.Посмотрим на максимально простой пример:
def retry(func):
def wrapper(*args, **kwargs):
print("--- Логика ДО запуска (например, проверка связи) ---")
result = func(*args, **kwargs) # Запуск вашей функции
print("--- Логика ПОСЛЕ запуска ---")
return result
return wrapper
@retry
def get_data(month):
print(f"Выгружаем данные за {month}...")
get_data("Январь")
Что здесь происходит на самом деле?
Многие думают, что
@ — это какая-то магия. На самом деле, когда вы пишете @retry над функцией, Python делает за вас вот такую подстановку:get_data = retry(get_data)Ваша функция
get_data буквально залетает в retry как аргумент. А внутри wrapper мы уже можем докрутить что угодно: добавить цикл for для повторных попыток или поставить паузу time.sleep, чтобы подождать, пока данные «доедут» до хранилища.Давайте так:
Если под этим постом наберем 50 реакций, я выложу в комментарии свою реальную рабочую версию декоратора с этого кейса. Там настроено количество попыток, время ожидания между ними.
Итог:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤🔥30🔥16 15🐳7 2 1
🔥 Claude Opus 4.6 (бесплатно) — а точнее MiMo-V2-Pro:
Да, вы не ослышались — бесплатный аналог уровня Claude Sonnet и Claude Opus. И я сам в это не верил, пока не попробовал.
Сейчас расскажу, как получить доступ к MiMo-V2-Pro абсолютно бесплатно и без ограничений на 7 дней.
Что такое MiMo-V2-Pro? 🤔
Это языковая модель от Xiaomi, которая по качеству ответов реально тянет на уровень Claude Sonnet и Claude Opus. Я активно тестирую её последние несколько дней и вам скажу честно — уровень вышка.
Сравнивал на своих задачах:
• Генерация SQL-запросов
• Объяснение кода
• Написание Python-скриптов
• Анализ данных
И самое главное — это бесплатно и безлимитно на 7 дней.
Как подключить? Всего 3 шага: ⚡️
1️⃣ Скачайте VS Code (если ещё нет):
https://code.visualstudio.com/
2️⃣ Установите расширение Kilo Code:
Откройте VS Code → Extensions (Ctrl+Shift+X) → найдите "Kilo Code" → Install
3️⃣ Выберите модель MiMo-V2-Pro:
После установки расширения в настройках выберите модель MiMo-V2-Pro — и всё, можно работать.
Почему стоит попробовать? 🔥
• Абсолютный безлимит на 7 дней — никаких ограничений по запросам
• Уровень Claude Sonnet/Opus — проверено на практике
• Работает прямо в VS Code — не нужно переключаться между окнами
• Бесплатно — ни копейки не платите
Я сам сейчас активно тестирую MiMo-V2-Pro для своих задач по аналитике и вам советую попробовать. Успевайте — неизвестно, сколько будет действовать бесплатный период.
Давайте так: 💯
Если под этим постом наберем 60 реакций, я выложу пост про то, как бесплатно использовать Nano Banana Pro — тоже топовая модель, для генерации изображений.
Итог:🤩
Если вы аналитик, разработчик или просто пишете код — попробуйте MiMo-V2-Pro через Kilo Code. Это реальная альтернатива платным моделям, которая работает не хуже.
❤️ Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)
❓ Пробовали MiMo-V2-Pro? Какие впечатления? Делитесь в комментариях!👇
✔️ Подпишитесь на канал, чтобы не пропустить следующие хаки.
🚬 Провожу обучение и консультации: mentor.dima-sqlit.ru
@dima_sqlit
Да, вы не ослышались — бесплатный аналог уровня Claude Sonnet и Claude Opus. И я сам в это не верил, пока не попробовал.
Сейчас расскажу, как получить доступ к MiMo-V2-Pro абсолютно бесплатно и без ограничений на 7 дней.
Что такое MiMo-V2-Pro? 🤔
Это языковая модель от Xiaomi, которая по качеству ответов реально тянет на уровень Claude Sonnet и Claude Opus. Я активно тестирую её последние несколько дней и вам скажу честно — уровень вышка.
Сравнивал на своих задачах:
• Генерация SQL-запросов
• Объяснение кода
• Написание Python-скриптов
• Анализ данных
И самое главное — это бесплатно и безлимитно на 7 дней.
Как подключить? Всего 3 шага: ⚡️
https://code.visualstudio.com/
Откройте VS Code → Extensions (Ctrl+Shift+X) → найдите "Kilo Code" → Install
После установки расширения в настройках выберите модель MiMo-V2-Pro — и всё, можно работать.
Почему стоит попробовать? 🔥
• Абсолютный безлимит на 7 дней — никаких ограничений по запросам
• Уровень Claude Sonnet/Opus — проверено на практике
• Работает прямо в VS Code — не нужно переключаться между окнами
• Бесплатно — ни копейки не платите
Я сам сейчас активно тестирую MiMo-V2-Pro для своих задач по аналитике и вам советую попробовать. Успевайте — неизвестно, сколько будет действовать бесплатный период.
Давайте так: 💯
Если под этим постом наберем 60 реакций, я выложу пост про то, как бесплатно использовать Nano Banana Pro — тоже топовая модель, для генерации изображений.
Итог:
Если вы аналитик, разработчик или просто пишете код — попробуйте MiMo-V2-Pro через Kilo Code. Это реальная альтернатива платным моделям, которая работает не хуже.
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥17 8🔥3 3 2 2🐳1 1 1
Считаем «окна» неактивности пользователя в SQL. Часть 1
На интервью в крупные финтех-компании (Тинькофф, Яндекс, Авито) часто дают эту задачу, чтобы проверить, умеете ли вы работать с временными рядами и оконными функциями.
Суть задачи:
Есть таблица логов
user_actions с колонками user_id и action_timestamp. Нужно найти все случаи, когда пользователь «пропадал» более чем на 30 минут между двумя действиями.Как это решается «на пальцах»?
Нам нужно сравнить время текущего действия со временем ПРЕДЫДУЩЕГО. В SQL для этого есть идеальный инструмент — оконная функция
LAG. Представьте, что вы стоите в очереди и спрашиваете человека сзади: «А когда зашел тот, кто был перед тобой?».Простейший пример решения:
WITH time_diffs AS (
SELECT
user_id,
action_timestamp,
-- Достаем время предыдущего действия для этого же юзера
LAG(action_timestamp) OVER(PARTITION BY user_id ORDER BY action_timestamp) as prev_ts
FROM user_actions
)
SELECT
user_id,
prev_ts as gap_start,
action_timestamp as gap_end,
-- Считаем разницу (в разных СУБД синтаксис даты чуть разный)
(action_timestamp - prev_ts) as duration
FROM time_diffs
WHERE (action_timestamp - prev_ts) > interval '30 minutes'
Почему здесь нужны оконные функции?
LAG понимал, какое действие было действительно предыдущим, данные должны быть отсортированы по времени.JOIN таблицы самой на себя, что на миллионах строк просто «повесит» базу.Давайте так: 👇
Эта задача — только верхушка айсберга. Если мы наберем под этим постом 50 реакций ❤️, я выложу вторую часть решения: как не просто найти разрывы, а сгруппировать их в полноценные сессии неактивности (задача Gaps and Islands в переводе "Пробелы и Острова").
Итог:
Оконные функции — это маст-хэв для аналитика. Научитесь пользоваться
LAG и LEAD, и 80% задач на временные интервалы будут решаться за 5 минут.@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥50🔥20🐳5
Нашёл для себя крутой канал про BI и дашборды — «Пирожки и бары»
Ведёт Маша, тимлид BI-аналитиков в Авито
Здесь реально полезно и при этом не занудно. Например, недавно там была прожарка графиков для королевы Елизаветы II — да, вы не ослышались
Ещё рекомендую глянуть:
Please open Telegram to view this post
VIEW IN TELEGRAM
🐳6❤🔥5 5
Формируем сессии для пользователей по указанному интервалу времени в SQL. Часть 2
В предыдущем посте мы просто нашли разрывы неактивности. Сейчас рассмотрим продолжение «Сгруппируй все действия в сессии активности».
Давайте разберем это на примере с двумя пользователями (Вася и Петя) по шагам.
Исходные данные (6 строк логов):
| user_id | action_time | Комментарий
|---------|-------------|-------------
| Вася | 10:00 | Старт Васи (Сессия 1)
| Вася | 10:15 | Вася активен
| Вася | 11:30 | Разрыв! (75 мин) → Старт Васи (Сессия 2)
| Вася | 11:40 | Вася активен
| Петя | 12:00 | Старт Пети (Сессия 1)
| Петя | 12:10 | Петя активен
Шаг 1. Находим моменты «разрыва»:
С помощью
LAG мы смотрим разницу с предыдущим временем внутри каждого юзера. Если разница > 30 минут — ставим флаг 1.| user_id | action_time | Diff | is_new_session |
|---------|-------------|--------|------------------------|
| Вася | 10:00 | - | 0 |
| Вася | 10:15 | 15 мин | 0 |
| Вася | 11:30 | 75 мин | 1 (Новый остров) |
| Вася | 11:40 | 10 мин | 0 |
| Петя | 12:00 | - | 0 (Сброс счетчика) |
| Петя | 12:10 | 10 мин | 0 |
WITH step1 AS (
SELECT
user_id,
action_timestamp,
CASE
WHEN action_timestamp - LAG(action_timestamp) OVER(PARTITION BY user_id ORDER BY action_timestamp) > interval '30 minutes'
THEN 1 ELSE 0
END as is_new_session
FROM user_actions
),
Шаг 2. Хитрый трюк с кумулятивной суммой:
Нам нужно дать строчкам одной сессии общий ID. Мы суммируем наши флаги сверху вниз. Благодаря
PARTITION BY user_id сумма сбрасывается для нового юзера.| user_id | action_time | is_new_session | session_id (Сумма) |
|---------|-------------|----------------|---------------------------|
| Вася | 10:00 | 0 | 0 |
| Вася | 10:15 | 0 | 0 |
| Вася | 11:30 | 1 | 1 (Сумма стала 1) |
| Вася | 11:40 | 0 | 1 |
| Петя | 12:00 | 0 | 0 (Счетчик обнулился!) |
| Петя | 12:10 | 0 | 0 |
step2 AS (
SELECT
*,
SUM(is_new_session) OVER(PARTITION BY user_id ORDER BY action_timestamp) as session_id
FROM step1
)
Шаг 3. Финальная агрегация (и как сделать ID уникальным):
Теперь всё просто: мы говорим базе «Сгруппируй все действия с одинаковым
user_id и session_id в одну строку». Чтобы ID был глобально уникальным, мы склеиваем их.| user_id | unique_session_id | start | end | count |
|---------|-------------------|--------|--------|-------|
| Вася | Вася_0 | 10:00 | 10:15 | 2 |
| Вася | Вася_1 | 11:30 | 11:40 | 2 |
| Петя | Петя_0 | 12:00 | 12:10 | 2 |
SELECT
user_id,
-- Генерируем уникальный ID для сессии
user_id || '_' || session_id as unique_session_id,
MIN(action_timestamp) as session_start,
MAX(action_timestamp) as session_end,
COUNT(*) as actions_count
FROM step2
GROUP BY user_id, session_id
Давайте так: 👇
Вы накидываете интересные вам задачи в комментарии и я постараюсь разбирать некоторые из них в следующих постах. Ну и давайте наберем под этим постом 50 реакций ❤️ и я чуть позже приложу в комментариях этот пост в формате markdown для вашего удобства.
Итог:
Сохраняйте этот пример, чтобы не запутаться в логике!
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥24 10🐳9🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
«Мои навыки написания кода атрофируются» —цитата Андрея Карпатого.
Того самого, кто строил OpenAI и автопилот в Tesla.
Если даже такие гиганты признают, что перестают писать код «руками», то к чему готовиться нам? Просто нажимать кнопку «Сделай красиво» и надеяться на чудо? Скажу честно: я и сам всё меньше «пишу» и всё больше «проверяю». Дирижирую нейронками.
Казалось бы, вот оно — счастье: машина работает за тебя. Но именно за этой иллюзорной легкостью и зарыта главная западня, о которой молчат адепты «нейросети заменят всех»:
Итог:
Есть одна жесткая правда: ИИ делает умных умнее, а глупых — ещё глупее.
Если у вас есть база, нейронка становится вашим множителем. Она дает вам суперсилу и высвобождает время для реально сложных задач. Но если ваши знания в коде — это «ноль», то результат умножения на ИИ всё равно останется нулевым.
Учите базу сейчас, чтобы завтра быть тем самым «дирижёром», который ведет проект
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥16 7🐳6🔥1
Пятница — время релизов! Пока все уходят на чилл, я допилил то, что давно хотел: свою собственную базу знаний.
🔥 Ловите ссылку: dima-sqlit.ru
Скажу честно: это максимальный MVP. Я просто затащил туда часть постов из канала. Где-то криво, где-то косо, верстка местами может поплыть, но суть не в этом.
Почему я решил, что сайт — это круче, чем просто Telegram?
Что дальше? В планах — докрутить поиск, добавить новые категории и переписать посты в корректном виде.
Итог:
Это только начало. Мне очень важно ваше мнение: зайдите, потыкайте, оставьте обратную связь.
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
2❤🔥30🔥14🐳6 3
🤖 Как бесплатно использовать Claude Code на базе Claude Sonnet 4.5:
Друзья, сегодня расскажу, как можно бесплатно попробовать Claude Code — мощный инструмент для работы с кодом на базе Claude Sonnet 4.5.
Что это даёт?
🔥 Claude Code — это не просто чат-бот. Это полноценный AI-ассистент для разработки, который умеет:
• Читать и анализировать код
• Писать и рефакторить функции
• Помогать с отладкой
• Работать с файлами проекта
Обычно доступ к Claude Sonnet 4.5 платный, но есть способ протестировать его бесплатно через omniroute.
Как это сделать:
1️⃣ Посмотрите это видео — там пошагово показано, как получить доступ к Claude Sonnet 4.5 через omniroute (код из видео я приложил в комментариях для вашего удобства).
2️⃣ Следуйте инструкциям из видео — настройка занимает буквально 10-15 минут.
3️⃣ Запускайте Claude Code и тестируйте все возможности: от генерации кода до работы с вашими проектами.
Почему стоит попробовать прямо сейчас?
⚡️ Пока есть возможность бесплатного доступа — используйте её! Это отличный шанс оценить, насколько AI может ускорить вашу работу с кодом.
🔥 Поставьте 50 реакций на этот пост — и я начну делать серию материалов о том, как я применяю нейронные сети в работе и повседневной жизни! Покажу реальные кейсы, которые упрощают рутину и экономят часы времени.
🚬 Провожу консультации по нейросетям: научу использовать эффективно, экономить на подписках и учиться быстрее с помощью AI.
🗽Написать в ЛС | mentor.dima-sqlit.ru
@dima_sqlit
Друзья, сегодня расскажу, как можно бесплатно попробовать Claude Code — мощный инструмент для работы с кодом на базе Claude Sonnet 4.5.
Что это даёт?
🔥 Claude Code — это не просто чат-бот. Это полноценный AI-ассистент для разработки, который умеет:
• Читать и анализировать код
• Писать и рефакторить функции
• Помогать с отладкой
• Работать с файлами проекта
Обычно доступ к Claude Sonnet 4.5 платный, но есть способ протестировать его бесплатно через omniroute.
Как это сделать:
1️⃣ Посмотрите это видео — там пошагово показано, как получить доступ к Claude Sonnet 4.5 через omniroute (код из видео я приложил в комментариях для вашего удобства).
2️⃣ Следуйте инструкциям из видео — настройка занимает буквально 10-15 минут.
3️⃣ Запускайте Claude Code и тестируйте все возможности: от генерации кода до работы с вашими проектами.
Почему стоит попробовать прямо сейчас?
⚡️ Пока есть возможность бесплатного доступа — используйте её! Это отличный шанс оценить, насколько AI может ускорить вашу работу с кодом.
🔥 Поставьте 50 реакций на этот пост — и я начну делать серию материалов о том, как я применяю нейронные сети в работе и повседневной жизни! Покажу реальные кейсы, которые упрощают рутину и экономят часы времени.
🗽Написать в ЛС | mentor.dima-sqlit.ru
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥45❤🔥8🐳7 2 2
🧠 Obsidian + нейронка — ваш личный второй мозг:
Каждый раз, когда открываешь нейронку — она тебя не помнит. Ни задач, которые ты уже решал, ни ошибок, на которых набивал шишки. Каждый раз с чистого листа.
А если дать ей память? Обсидиан + нейронка решают эту проблему раз и навсегда.
Идея простая: накапливаешь свою базу знаний в Obsidian → потом нейронка работает уже на основе твоего контекста.
Как это выглядит в жизни:✅
1️⃣ База знаний по работе Ведёшь рабочий дневник. Описываешь задачи: что за задача, как подошёл, с чем столкнулся, как решил. Через месяц у тебя не "ну я вроде что-то похожее делал", а конкретная точка входа.
🔵 Кейс 1 — ты помнишь, что что-то похожее уже решал, но не помнишь где. Спрашиваешь нейронку: «Я что-то подобное делал, помоги найти». Бам — находит.
🔵 Кейс 2 — хочешь понять, что можно автоматизировать в своей работе. Говоришь: «Посмотри всё, что я делал. Найди слабые места. Что можно ускорить и улучшить?» И получаешь реальный разбор, а не общие советы из интернета.
2️⃣ Личная база знаний (не рабочая) Ведёшь дневник, записываешь что читал, как питался, что смотрел, что думал. Потом спрашиваешь: «Хочу улучшить свою продуктивность — посмотри мои заметки и предложи, что поменять». Нейронка знает твою ситуацию, а не абстрактного человека из интернета.
Почему Obsidian, а не просто папка с файлами?✅
Там можно удобно строить связи между заметками. Вы сами настраиваете, что с чем связано — нейронка потом ориентируется в этой структуре и выдаёт релевантные ответы, а не гадает по куче разрозненных файлов.
Ещё один крутой кейс — добавление нового материала✅
Поработал с новым материалом, прочитал статью, прошёл кусок курса. Говоришь нейронке: «Вот новый материал. Проанализируй мою базу знаний и предложи, куда это вписать, с чем это связать». Она сама найдёт нужные заметки и покажет, как это встраивается в то, что ты уже знаешь.
Это работает для чего угодно: аналитика, английский язык, питание, саморазвитие — масса применений.
Чтобы разобраться с Obsidian с нуля, я уже писал об этом статью — вот ссылка: [Obsidian]
🔥 Набираем 70 реакций на этот пост — и готовлю новый огненный пост про использования нейронок
🚬 Вопросы, обучение, консультации: Написать в ЛС | mentor.dima-sqlit.ru
@dima_sqlit
Каждый раз, когда открываешь нейронку — она тебя не помнит. Ни задач, которые ты уже решал, ни ошибок, на которых набивал шишки. Каждый раз с чистого листа.
А если дать ей память? Обсидиан + нейронка решают эту проблему раз и навсегда.
Идея простая: накапливаешь свою базу знаний в Obsidian → потом нейронка работает уже на основе твоего контекста.
Как это выглядит в жизни:
Почему Obsidian, а не просто папка с файлами?
Там можно удобно строить связи между заметками. Вы сами настраиваете, что с чем связано — нейронка потом ориентируется в этой структуре и выдаёт релевантные ответы, а не гадает по куче разрозненных файлов.
Ещё один крутой кейс — добавление нового материала
Поработал с новым материалом, прочитал статью, прошёл кусок курса. Говоришь нейронке: «Вот новый материал. Проанализируй мою базу знаний и предложи, куда это вписать, с чем это связать». Она сама найдёт нужные заметки и покажет, как это встраивается в то, что ты уже знаешь.
Это работает для чего угодно: аналитика, английский язык, питание, саморазвитие — масса применений.
Чтобы разобраться с Obsidian с нуля, я уже писал об этом статью — вот ссылка: [Obsidian]
🔥 Набираем 70 реакций на этот пост — и готовлю новый огненный пост про использования нейронок
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥46🐳5❤🔥2 2 1
Накодил обновления на двух сайтах:
• 📚 Сайт с базой знаний: dima-sqlit.ru
• 🎓 Сайт с менторством: mentor.dima-sqlit.ru
• Переделал дизайн, подчистил интерфейс, сделал приятнее глазу.
• Добавил статьи с разбором базовых вопросов на собеседованиях — всё на сайте.
Прошу вас: 👇
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥21 10 7🔥4 2 1
🗂 Skill для аналитиков: один файл — и нейронка всегда знает, как ты работаешь
Есть штука, которую используют единицы, хотя она реально экономит время — скилл.
Что это такое технически? Обычный Markdown-файл с YAML-заголовком (frontmatter):
Как вызвать скилл? Два способа:
• 🤖 Автоматически — в поле description прописываешь триггер: «используется когда автор пишет про документацию». Нейронка сама подхватит
• ✋ Вручную — просто говоришь: «Используй скилл X, у меня вот такая задача». Я сам обычно так и делаю
Где это реально полезно в аналитике:
1️⃣ Документация Прописал раз: как оформлять описание таблиц, метрик, дашбордов. Теперь нейронка всегда пишет в твоём стиле — не нужно каждый раз объяснять структуру
2️⃣ Стиль кода Описал: функции оформляй так, комментарии — вот так, если код идёт в репозиторий — добавляй докстринги. Всё. Получаешь консистентный код без лишних правок
3️⃣ Шаблоны SQL-запросов Хочешь, чтобы запросы всегда были в определённом стиле: алиасы, форматирование, комментарии к сложной логике? Один скилл — и это работает по умолчанию
Как создать скилл под себя? Не нужно ничего писать вручную с нуля. Просто даёшь нейронке контекст: что хочешь автоматизировать, как это должно работать, примеры. Она сама создаст скилл. Быстро и под твои задачи.
❗️ Важно: не используй готовые скиллы из интернета без проверки — там может быть вредоносный код. Из проверенных могу рекомендовать скилл superpowers — разберём его подробно в одном из следующих постов.
Важно понимать: Скилл даёт скелет — хорошую базу. Но проверять логику, дополнять деталями и «доводить до ума» всё равно нужно самому. Нейронка пока не знает нюансов твоего проекта лучше тебя.
Итог:🤩
🔥 Ставим 70 реакций на этот пост — и делаю разбор скилла superpowers.
📤 Пересылай пост коллеге или другу из аналитики — это бесплатно и помогает каналу расти. Спасибо!
🚬 Вопросы, обучение, консультации: Написать в ЛС | mentor.dima-sqlit.ru
@dima_sqlit
Есть штука, которую используют единицы, хотя она реально экономит время — скилл.
Что это такое технически? Обычный Markdown-файл с YAML-заголовком (frontmatter):
---
name: my_skill
description: Используется когда нужно написать документацию к коду
---
# Инструкция
[здесь твои правила и примеры]
Нейронка читает его автоматически и сразу понимает контекст. Больше ничего объяснять не нужно.
Как вызвать скилл? Два способа:
• 🤖 Автоматически — в поле description прописываешь триггер: «используется когда автор пишет про документацию». Нейронка сама подхватит
• ✋ Вручную — просто говоришь: «Используй скилл X, у меня вот такая задача». Я сам обычно так и делаю
Где это реально полезно в аналитике:
Как создать скилл под себя? Не нужно ничего писать вручную с нуля. Просто даёшь нейронке контекст: что хочешь автоматизировать, как это должно работать, примеры. Она сама создаст скилл. Быстро и под твои задачи.
❗️ Важно: не используй готовые скиллы из интернета без проверки — там может быть вредоносный код. Из проверенных могу рекомендовать скилл superpowers — разберём его подробно в одном из следующих постов.
Важно понимать: Скилл даёт скелет — хорошую базу. Но проверять логику, дополнять деталями и «доводить до ума» всё равно нужно самому. Нейронка пока не знает нюансов твоего проекта лучше тебя.
Итог:
🔥 Ставим 70 реакций на этот пост — и делаю разбор скилла superpowers.
📤 Пересылай пост коллеге или другу из аналитики — это бесплатно и помогает каналу расти. Спасибо!
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥38❤🔥6🐳4
Trino — это не база данных. Это распределённый SQL-движок, который подключается к десяткам источников: PostgreSQL, ClickHouse, Hive, S3 и другим. У него есть свои ресурсы (воркеры, память, CPU), но хранить данные он не умеет — он их берёт из источников и обрабатывает у себя.
И вот здесь начинаются сюрпризы.
Когда Trino выполняет запрос к внешнему источнику, в идеале он должен «протолкнуть» (push down) часть работы прямо туда: фильтры, агрегации, лимиты. Тогда источник вернёт уже обработанный результат — маленький и быстрый.
Но pushdown не всегда работает. Это зависит от конкретного коннектора, версии Trino и сложности запроса. Если pushdown не сработал — Trino тащит всю таблицу к себе и фильтрует уже у себя в памяти. Например:
-- Trino может вытащить всю таблицу orders и только потом отфильтровать
SELECT *
FROM postgres.public.orders
WHERE created_at > '2024-01-01'
Хочешь точно знать, что происходит? Смотри EXPLAIN — в плане будет видно, пошёл ли фильтр в источник или Trino делает это сам.
system.query — это способ сказать Trino: «не думай сам, выполни этот SQL прямо в источнике и просто верни мне результат».
1️⃣ PostgreSQL — тяжёлый фильтр по индексу:
SELECT *
FROM TABLE(
postgres.system.query(
query => 'SELECT id, amount FROM orders WHERE created_at > ''2024-01-01'''
)
)
PostgreSQL выполнит запрос сам, использует свои индексы — и вернёт только нужные строки.
2️⃣ ClickHouse — агрегация на стороне источника:
SELECT *
FROM TABLE(
clickhouse.system.query(
query => 'SELECT event_date, count() FROM events GROUP BY event_date'
)
)
ClickHouse заточен под колоночные агрегации. Если делать GROUP BY в Trino поверх ClickHouse — он сначала вытащит все сырые строки. system.query оставляет агрегацию там, где ей место.
✅ Используй, если мысленно отвечаешь «да» хотя бы на один вопрос:
• «Я точно знаю, что эта логика быстрее выполнится в источнике» → используй
• «Таблица большая, а мне нужен маленький срез — и я не уверен, что Trino сам догадается» → используй
• «Я делаю агрегацию в ClickHouse и не хочу гонять миллионы строк» → используй
• «EXPLAIN показывает, что pushdown не работает» → используй
❌ Не используй, если:
• Нужно джойнить данные из разных источников — тут Trino незаменим, system.query не даст соединить PG и ClickHouse в одном запросе
• Запрос простой и ты уверен, что pushdown сработал
• Хочешь переносимый запрос без привязки к диалекту источника
Итог:
🔥 Набираем 70 реакций на этот пост — так я пойму, что стоит делать больше таких разборов.
📤 Пересылай пост коллеге или другу из аналитики — это бесплатно и помогает каналу расти. Спасибо!
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25 8❤🔥6
🎙 Иду на AHA'26 — и вам советую:
22 мая в Москве проходит AHA'26 — конференция для тех, кто работает с данными и AI. Решил пойти сам — и вот почему.
Там реально интересная программа: как компании проверяют идеи быстрее и дешевле, как строят AI-продукты, которые реально работают, как не утонуть в данных и доверять тому, что в них написано. Без воды — только практика от команд, которые уже это сделали.
Выступают ребята из Яндекса, Авиасейлс, Сбера, X5 Tech, ВкусВилла, Wildberries, Т-Банка и ещё десятков компаний. Это не те, кто рассказывает «как надо» в теории — это те, кто уже запустил и работает с этим каждый день.
Форматы:
• Офлайн — 39 900 ₽ (22 мая + онлайн-день 14 мая + записи на 6 месяцев)
• Онлайн — 19 900 ₽ (трансляции 14 и 22 мая + материалы на 6 месяцев)
🎁 Для подписчиков моего канала — скидка 10% по промокоду DSQLIT10 при регистрации на сайте.
👋 Если тоже идёте офлайн — пишите, возможно, пересечёмся
❔ Планируете идти? Офлайн или онлайн? Делитесь в комментариях!
22 мая в Москве проходит AHA'26 — конференция для тех, кто работает с данными и AI. Решил пойти сам — и вот почему.
Там реально интересная программа: как компании проверяют идеи быстрее и дешевле, как строят AI-продукты, которые реально работают, как не утонуть в данных и доверять тому, что в них написано. Без воды — только практика от команд, которые уже это сделали.
Выступают ребята из Яндекса, Авиасейлс, Сбера, X5 Tech, ВкусВилла, Wildberries, Т-Банка и ещё десятков компаний. Это не те, кто рассказывает «как надо» в теории — это те, кто уже запустил и работает с этим каждый день.
Форматы:
• Офлайн — 39 900 ₽ (22 мая + онлайн-день 14 мая + записи на 6 месяцев)
• Онлайн — 19 900 ₽ (трансляции 14 и 22 мая + материалы на 6 месяцев)
🎁 Для подписчиков моего канала — скидка 10% по промокоду DSQLIT10 при регистрации на сайте.
👋 Если тоже идёте офлайн — пишите, возможно, пересечёмся
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7 7❤🔥4 3🐳1
⚡️ Параллельные запросы в ClickHouse через Python — ускоряем выгрузку в разы:
Знакомая ситуация: нужно выгрузить данные за 30 дней, пишешь цикл, день за днём, и ждёшь 30 минут.
А можно запустить все запросы одновременно и получить результат в 5–10 раз быстрее.
Сегодня покажу, как это сделать на простом примере.
Что сделаем:
🟢 Напишем функцию, которая выгружает данные за один день из ClickHouse.
🟢 Запустим её для нескольких дат параллельно с помощью
🟢 Соберём все результаты в один
Разбор по шагам:
1️⃣ Функция для одного дня:
Создаём функцию
2️⃣ Запускаем параллельно:
Используем
Что происходит под капотом:
•
•
•
•
То есть
3️⃣ Собираем результаты:
🌟 Как это выглядит в консоли:
Итог:🤩
Как выбирать max_workers?
• Для тяжёлых запросов к БД: 3–5 воркеров
• Для лёгких API-запросов: 10–20 воркеров
• Начинайте с 3 и смотрите на нагрузку базы — ClickHouse может обрабатывать ограниченное число запросов одновременно
🚀 Работает не только с ClickHouse — PostgreSQL, MySQL, любые API. Паттерн универсальный.
🔥 Набираем 70 реакций на этот пост — так я пойму, что стоит делать больше таких разборов.
📤 Пересылай пост коллеге или другу из аналитики — это бесплатно и помогает каналу расти. Спасибо!
🚬 Вопросы, менторство, консультации: Написать в ЛС | mentor.dima-sqlit.ru
@dima_sqlit
Знакомая ситуация: нужно выгрузить данные за 30 дней, пишешь цикл, день за днём, и ждёшь 30 минут.
А можно запустить все запросы одновременно и получить результат в 5–10 раз быстрее.
Сегодня покажу, как это сделать на простом примере.
Что сделаем:
ThreadPoolExecutor.DataFrame.Разбор по шагам:
Создаём функцию
load_day — она принимает дату, делает запрос в ClickHouse и возвращает DataFrame:import clickhouse_connect
import pandas as pd
def load_day(date_str):
print(f' [{date_str}] → запрос начат')
client = clickhouse_connect.get_client(**CH_CREDS)
df = client.query_df(f"""
SELECT * FROM events
WHERE date = '{date_str}'
""")
client.close()
print(f' [{date_str}] → готово, строк: {len(df)}')
return df
Используем
ThreadPoolExecutor. Ключевой момент — функция начинает выполняться прямо в момент вызова submit():from concurrent.futures import ThreadPoolExecutor, as_completed
dates = ['2024-01-01', '2024-01-02', '2024-01-03', '2024-01-04']
executor = ThreadPoolExecutor(max_workers=3)
tasks = {executor.submit(load_day, d): d for d in dates}
# ↑ вот здесь load_day УЖЕ запустилась в фоновом потоке
# submit() не ждёт результата — сразу возвращает "квитанцию" (Future)
# и цикл переходит к следующей дате
Что происходит под капотом:
•
submit(load_day, '2024-01-01') → поток 1 сразу побежал делать запрос в ClickHouse •
submit(load_day, '2024-01-02') → поток 2 сразу побежал, пока первый ещё работает •
submit(load_day, '2024-01-03') → поток 3 сразу побежал •
submit(load_day, '2024-01-04') → все 3 воркера заняты — ждёт в очередиТо есть
submit() — это как «отдать задание курьеру». Курьер побежал, а ты уже отдаёшь задание следующему. max_workers=3 — значит у тебя 3 курьера. Четвёртое задание ляжет на стол и подождёт, пока кто-то вернётся.as_completed отдаёт задачи по мере их завершения — какая первая закончилась, ту и получаем:results = []
for task in as_completed(tasks):
date = tasks[task]
try:
results.append(task.result())
print(f' {date} — результат получен ✅')
except Exception as e:
print(f' {date} — ошибка: {e} ❌')
executor.shutdown()
df = pd.concat(results, ignore_index=True)
print(f'Всего строк: {len(df)}')
[2024-01-01] → запрос начат ← воркер 1 стартовал
[2024-01-02] → запрос начат ← воркер 2 стартовал
[2024-01-03] → запрос начат ← воркер 3 стартовал
[2024-01-03] → готово, строк: 1200
2024-01-03 — результат получен ✅
[2024-01-04] → запрос начат ← воркер 3 освободился, взял 4-й день
[2024-01-01] → готово, строк: 980
2024-01-01 — результат получен ✅
...
Итог:
Как выбирать max_workers?
• Для тяжёлых запросов к БД: 3–5 воркеров
• Для лёгких API-запросов: 10–20 воркеров
• Начинайте с 3 и смотрите на нагрузку базы — ClickHouse может обрабатывать ограниченное число запросов одновременно
🚀 Работает не только с ClickHouse — PostgreSQL, MySQL, любые API. Паттерн универсальный.
🔥 Набираем 70 реакций на этот пост — так я пойму, что стоит делать больше таких разборов.
📤 Пересылай пост коллеге или другу из аналитики — это бесплатно и помогает каналу расти. Спасибо!
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥33❤🔥5🐳5
Сегодня хочу познакомить вас с Олегом — аналитиком данных с 5+ лет в B2B и B2G-проектах. Работал с заказчиками от стартапов до госсектора, набил шишки на каждом этапе — от сбора требований до сдачи отчётов.
Рекомендую начать знакомство с постов:
1) Первый — как Олег попал в IT: от техподдержки охранной компании, через проваленное тестовое — до аналитика на реальных проектах. Мотивирует 🔥
2) Второй — история «Договорился и передоговорился»: заказчик согласовал объём, а потом пришёл с 300% дополнительных требований за те же деньги.
3) Третий — план канала на 2026 год, что Олег будет разбирать весь год и в какой последовательности — от Excel и SQL до Python, портфолио и продуктового мышления. Удобно, чтобы не пропустить что-то нужное
4) И много других интересных постов......
Если вам интересно:
• как устроена работа аналитика в B2B и B2G
• как выстраивать отношения с заказчиками и защищать свои границы
• как строить карьеру в IT с нуля — без нужного диплома и опыта
Подписывайтесь на «Data Дзен», чтобы не потерять
Please open Telegram to view this post
VIEW IN TELEGRAM
🤖 Сделал телеграм-бота за вечер — и вот зачем:
Раньше прикладывал материалы прямо в постах или комментариях.
Но когда материала становится больше — это неудобно: и вам лень искать по истории, и мне неудобно хранить.
Поэтому я сделал отдельного бота. Логично, удобно, по-человечески.
Как это работает — win-win для всех:🤯
1️⃣ Для вас — все материалы собраны в одном месте. Заходите в бот, тыкаете нужное, и оно сразу прилетает вам. Никакой беготни по постам.
2️⃣ Для меня — бот требует подписку на канал, и тем самым помогает мне наращивать аудиторию. Абсолютно бесплатно для вас — это просто подписка.
3️⃣ В будущем — возможно появятся платные материалы. Но пока две модели: совсем без подписки, или с подпиской. Всё прозрачно.
И да — написал этого бота за один вечер при помощи нейронок🌟
Это к тому, что AI уже сейчас позволяет создавать проекты, которые реально закрывают ваши задачи даже если вы не разработчик.🌟
Что уже есть в боте:🤛
Первые 5 каруселей по A/B тестам — уже там. Я давно хотел систематизировать для себя эту тему, и решил совместить полезное с приятным: делаю красивые слайды, которые коротко и понятно объясняют материал по AB-тестам.
Буду рад вашей обратной связи:
• Как работает бот?
• Нравится ли визуал и подача?
• Что непонятно или хочется доработать?
• Накиньте ваших реакций, чтобы понимать интересно вам такое или нет 🔥
А если вы хорошо шарите в A/B тестах и хотите помочь с материалом — вэлком в ЛС
Итог:🤩
• Если вам самим интересно внедрить AI — в работу, в личные проекты, или просто понять, что с этим вообще можно делать — могу проконсульровать (все индивидуально под ваш запрос).
• Ну или может быть вам нужно сделать какой-то аналогичны проект под ключ, также можете писать с вашими запросами, интересно и в эту тему развиваться.
🌟 Ссылка на бота (гоу тестировать): Бот_канала_dima_sqlit
🚬 Вопросы, менторство, консультации: Написать в ЛС | mentor.dima-sqlit.ru
@dima_sqlit
Раньше прикладывал материалы прямо в постах или комментариях.
Но когда материала становится больше — это неудобно: и вам лень искать по истории, и мне неудобно хранить.
Поэтому я сделал отдельного бота. Логично, удобно, по-человечески.
Как это работает — win-win для всех:
И да — написал этого бота за один вечер при помощи нейронок
Это к тому, что AI уже сейчас позволяет создавать проекты, которые реально закрывают ваши задачи даже если вы не разработчик.
Что уже есть в боте:
Первые 5 каруселей по A/B тестам — уже там. Я давно хотел систематизировать для себя эту тему, и решил совместить полезное с приятным: делаю красивые слайды, которые коротко и понятно объясняют материал по AB-тестам.
Буду рад вашей обратной связи:
• Как работает бот?
• Нравится ли визуал и подача?
• Что непонятно или хочется доработать?
• Накиньте ваших реакций, чтобы понимать интересно вам такое или нет 🔥
А если вы хорошо шарите в A/B тестах и хотите помочь с материалом — вэлком в ЛС
Итог:
• Если вам самим интересно внедрить AI — в работу, в личные проекты, или просто понять, что с этим вообще можно делать — могу проконсульровать (все индивидуально под ваш запрос).
• Ну или может быть вам нужно сделать какой-то аналогичны проект под ключ, также можете писать с вашими запросами, интересно и в эту тему развиваться.
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤🔥7🐳4 1 1