This media is not supported in your browser
VIEW IN TELEGRAM
Он включает преднастроенные потоки для интеграции моделей ИИ, таких как OpenAI, Ollama и другие, позволяя управлять данными и автоматизировать процессы без необходимости использования облачных сервисов. Решение идеально подходит для бизнеса и индивидуальных разработчиков.
Лицензия: Apache-2.0
Please open Telegram to view this post
VIEW IN TELEGRAM
Этот проект предлагает готовую облачную платформу или возможность самому развернуть альтернативу Firebase, но с GraphQL и PostgreSQL под капотом. Вместо NoSQL — привычный SQL, вместо REST — мощный GraphQL API на базе Hasura, а также встроенные аутентификация, хранилище и serverless-функции.
При этом Nhost не привязывает разработчика к конкретному фронтенд-фреймворку. Один и тот же SDK работает с React, Vue, Next.js и даже Flutter. Локальная разработка упрощена благодаря CLI, а для продакшна можно выбрать как managed-решение от создателей, так и развернуть всё на своих серверах через Docker.
Please open Telegram to view this post
VIEW IN TELEGRAM
Мы уже рассказывали про хранение данных на бумаге и в черно-белых видео с помехами, но недавно обнаружилось еще более оригинальное хранилище — скворец. Точнее, песня скворца.
Ютубер Бенн Джордан выложил видео, где рассказал, как записывал и анализировал песни разных птиц. Одной из этих птиц стал скворец по имени Рот (или Mouth), который всю жизнь прожил с людьми и научился имитировать окружающие его звуки вроде щелчка камеры или человеческих голосов.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Иногда нужно найти пары строк, которые почти совпадают — например, из-за опечатки в одной букве. Такой кейс часто встречается при поиске дублей в именах, 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')
Please open Telegram to view this post
VIEW IN TELEGRAM
1. pandas
read_csv("flight_data.csv") → весь файл свалился в одну колонку 2. DuckDB
SELECT * FROM read_csv('flight_data.csv') → автоматически подхватил разделитель и выдал аккуратные столбцыЕсли работаете с CSV с нестандартным delimiter’ом, попробуйте прочитать его через DuckDB: детектирует разделители сам и экономит ваше время на ручной настройке.
Please open Telegram to view this post
VIEW IN TELEGRAM
Компания Posit известна как разработчик RStudio — среды разработки, популярной среди дата саентистов и предназначенной для работы с R. Их новый проект, Positron, призван выступить как новая, более гибкая альтернатива.
Если верить отзывам, после 2 лет в разработке Positron все еще страдает от багов и недостатка фич, особенно по сравнению с более привычным многим RStudio, но это уже вполне рабочий и перспективный инструмент.
Он доступен бесплатно на Windows, macOS и Linux.
Please open Telegram to view this post
VIEW IN TELEGRAM
Как избежать «ИИ-пилотного болота»: опыт PepsiCo
В начале бума генеративного ИИ многие компании бросились внедрять всё подряд — и часто получали сомнительные результаты. Сегодня многие сворачивают пилоты, но у PepsiCo всё пошло иначе.
Секрет — в стратегии: максимум 4–5 ИИ-проектов одновременно, на которые идут ресурсы и эксперты. Остальное тестируется во внутренней песочнице PepGenX — запуск только после доказанной пользы для KPI.
Прогнозирование спроса
ИИ каждый день пересчитывает прогнозы, анализируя продажи, маркетинг и сотни внешних сигналов. Видит «горячие» недели до того, как они наступят.
ИИ-агенты на складах
Автоматизируют планировку хранения, подсказывают мерчандайзерам, куда выкладывать товар.
ИИ-продажники
На B2B-платформе оформляют заказы, дают клиентам данные о запасах в реальном времени, прогнозируют поставки и помогают запускать таргетированные кампании.
Разработка продуктов
ИИ сокращает запуск новинок с 6–9 месяцев до 6 недель, оптимизирует рецептуры и брендинг.
Маркетинг
Генерирует идеи, тестирует их на виртуальных респондентах и оптимизирует кампании.
Итог: никакой гонки за хайпом — только точечные ИИ-решения, которые приносят измеримый бизнес-результат.
В начале бума генеративного ИИ многие компании бросились внедрять всё подряд — и часто получали сомнительные результаты. Сегодня многие сворачивают пилоты, но у PepsiCo всё пошло иначе.
Секрет — в стратегии: максимум 4–5 ИИ-проектов одновременно, на которые идут ресурсы и эксперты. Остальное тестируется во внутренней песочнице PepGenX — запуск только после доказанной пользы для KPI.
Прогнозирование спроса
ИИ каждый день пересчитывает прогнозы, анализируя продажи, маркетинг и сотни внешних сигналов. Видит «горячие» недели до того, как они наступят.
ИИ-агенты на складах
Автоматизируют планировку хранения, подсказывают мерчандайзерам, куда выкладывать товар.
ИИ-продажники
На B2B-платформе оформляют заказы, дают клиентам данные о запасах в реальном времени, прогнозируют поставки и помогают запускать таргетированные кампании.
Разработка продуктов
ИИ сокращает запуск новинок с 6–9 месяцев до 6 недель, оптимизирует рецептуры и брендинг.
Маркетинг
Генерирует идеи, тестирует их на виртуальных респондентах и оптимизирует кампании.
Итог: никакой гонки за хайпом — только точечные ИИ-решения, которые приносят измеримый бизнес-результат.
Иногда нужно из каждой группы выбрать одну запись, например, самую раннюю по дате. Если у вас нет оконных функций (например, в старом 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;
Please open Telegram to view this post
VIEW IN TELEGRAM
Одно из главных препятствий на пути к внедрению в компании data-driven подхода — это то, что обычные бизнес-юзеры не понимают, как им работать с аналитикой. Не просить у аналитиков каждый раз сделать отчет или выгрузку, а самостоятельно копаться в данных и находить ответы на свои вопросы.
Плюсы в том, что не приходится прописывать всю эту информацию каждый раз в разных системах, а бизнес-пользователи могут работать с данными, оперируя понятными им терминами и названиями. И уже под капотом у семантического слоя их простые запросы трансформируются в оптимизированный SQL-код.
Конечно, нужно это не всем. Введение семантического слоя оправдано, когда:
Если пока нет необходимости объединять системы и стандартизировать расчеты, тратить время на создание семантического слоя может быть нерационально.
Для тех, кому этого мало, даже дали ссылку на еще подробную статью с подборкой полезных материалов и списком тулов для создания семантических слоев.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Продвинутый SQL-трюк: Как одним запросом вытащить только самую последнюю запись по каждой группе — и при этом сохранить все остальные поля
Если ты хочешь, например, получить последний заказ по каждому клиенту, но у тебя нет оконных функций или ты хочешь максимально производительный запрос — вот чистый, понятный способ.
🫡 Всё пиз-Data Science
Если ты хочешь, например, получить последний заказ по каждому клиенту, но у тебя нет оконных функций или ты хочешь максимально производительный запрос — вот чистый, понятный способ.
-- Найдём последнюю покупку по каждому 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 ускорит запрос
Please open Telegram to view this post
VIEW IN TELEGRAM
Что если к языковой модели можно обращаться как к обычной базе данных?
uQLM (Universal Query Language for Models) позволяет писать SQL‑подобные запросы, чтобы:
SELECT generate_response(prompt)
FROM gpt4
WHERE prompt LIKE '%explain%'
LIMIT 5;
uQLM работает как прослойка между пользователем и языковой моделью, облегчая интеграцию ИИ в аналитические пайплайны.
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья содержит 120 ключевых вопросов по SQL для собеседований, разделённых по темам и уровням сложности, с краткими пояснениями.
Основываясь на актуальных требованиях 2025 года, вопросы охватывают базу данных, оптимизацию, практические задачи и нюансы СУБД (MySQL, PostgreSQL, SQL Server).
Please open Telegram to view this post
VIEW IN TELEGRAM
Кажется, скоро это станет базовой формулой: хочешь денег — используй ИИ. Хочется верить, что это не приведёт к созданию ИИ-проектов, где ИИ не нужен.
Please open Telegram to view this post
VIEW IN TELEGRAM
Каждый месяц — битва с бесконечными таблицами и версиями «финальной» цифры.
В какой-то момент кажется, что всё сошлось, но уверенности нет. Хватит ли вам сил и времени на этот хаос? 😓
9 сентября, на вебинаре от Дельта BI, Navicon и Денвик Аналитика вы
узнаете, как навести порядок в данных и автоматизировать процессы, чтобы стать настоящим чемпионом аналитики.
Представьте, что вы:
📍 Быстро и безопасно выгружаете данные из 1С, словно по волшебству.
📍 Объединяете таблицы Excel с другими источниками с помощью удобного low-code ELT, словно это детская игра.
📍 Создаёте дашборд в Дельта BI, который работает сам по себе, освобождая ваше время для важных дел.
Умение правильно использовать аналитику — ключ к успеху.
Это возможность быть на шаг или два впереди конкурентов, быстро реагировать на изменения рынка и принимать обоснованные решения.
🔗 Присоединяйтесь к нам! Зарегистрируйтесь по ссылке
После этого вебинара вы наконец-то скажете: «Теперь я понимаю, как сделать аналитику простой и эффективной!»🚀
В какой-то момент кажется, что всё сошлось, но уверенности нет. Хватит ли вам сил и времени на этот хаос? 😓
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 собрали математическую модель, которая отвечает на этот вопрос. В проекте рассматриваются разные виды надрезов — вертикальные, радиальные, надрезы к воображаемой точке под луковицей: всё, чтобы получить кусочки минимально отличающиеся по размерам.
Please open Telegram to view this post
VIEW IN TELEGRAM
У тебя есть две таблицы:
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? 😡
Нужно использовать 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
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;
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Что умеет:
Please open Telegram to view this post
VIEW IN TELEGRAM
Этот проект разрабатывается как учебная реализация OLAP-системы с поддержкой SQL-запросов, включая выполнение TPC-H тестов.
Для тех, кто хочет заглянуть под капот аналитических баз данных, RisingLight предлагает отличную возможность изучить их устройство на практике. Хотя проект пока не готов для production, он уже даёт представление о ключевых компонентах СУБД: от парсера запросов до исполнителя. Сообщество активно развивается: есть Discord, Telegram и даже WeChat-чат для обсуждения. Авторы приветствуют вклад новичков и предлагают список "good first issues" для первых PR.
Please open Telegram to view this post
VIEW IN TELEGRAM
Задача
Есть таблица продаж по дням:
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 )
Зачем так делать:
Please open Telegram to view this post
VIEW IN TELEGRAM
Разработчики замутили настоящий олдскульный шедевр, который сделает из вас МАСТЕРА баз данных и точно не даст заскучать.
Любые запросы к базам — щёлкаем как семечки
Please open Telegram to view this post
VIEW IN TELEGRAM