AI-система анализа данных с Text-to-Code: быстрая генерация SQL и Python

Аналитики тратят часы на ручные выгрузки, а решения бизнеса ждут цифры. Мы разрабатываем AI-систему анализа данных под ключ: она превращает вопрос на обычном языке в готовый запрос и сокращает время подготовки выборок в разы. Обсудим задачу и вернёмся с оценкой и планом.
Часто задаваемые вопросы

AI анализ данных: где ломается ручной контур

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

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

Генерация SQL по вопросу смещает работу аналитика с набора текста на проверку смысла. Модель строит черновой запрос по описанию и схеме данных, а человек контролирует то, что действительно ломает отчёты: границы периодов, соединения таблиц, дубли и пропуски, определение метрики.

Каждый такой запрос становится переиспользуемым: одинаковые вопросы получают одинаковую логику, а не девять разных трактовок «активных клиентов». Меняется и очередь — часть вопросов закрывается прямо из интерфейса, не доходя до аналитика.

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

Эффект от Text-to-Code в анализе данных

Text-to-Code не заменяет аналитика, а снимает с него рутину. Модель разбирает формулировку на естественном языке, сверяет её со схемой витрин и собирает SQL или Python, который сразу уходит на выполнение. Разница видна не в демонстрации, а в потоке задач: типовые обращения перестают ждать в очереди.

Сколько времени экономит генерация типовых выборок

Типовая выборка — соединение нескольких таблиц, фильтр по периоду и агрегация по двум-трём разрезам. Вручную такой запрос собирается от получаса до двух, а если поля и гранулярность нужно уточнять у заказчика — дольше. Генерация даёт рабочий черновик за секунды, и человек проверяет только смысл результата: у наших заказчиков 55–70% таких обращений закрываются без аналитика.

Класс ошибок, который уходит вместе с ручным кодом

Главный источник ошибок в ручном коде — логика соединений: неверно выбранный тип связи, потеря строк при внутреннем соединении вместо внешнего, разная гранулярность ключей, дубли на связях «многие ко многим». Генератор строит граф соединений по описанным связям в каталоге данных, поэтому такой класс ошибок не воспроизводится; результат сверяется на контрольных суммах, а не на глаз.

«Каждый сгенерированный запрос проходит проверку прав на уровне роли: если у пользователя нет доступа к витрине, он не выполнится, даже когда код собран корректно», — инженер нашей команды.

Вместе это перераспределяет нагрузку: аналитики уходят от потока однотипных заявок к моделированию и разбору спорных данных, а срок ответа на типовой вопрос измеряется минутами вместо дней.

Режимы генерации запросов: сравнение вариантов

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

Вариант Когда подходит Ограничения
Генерация только SQL Витрины и отчёты по стабильной схеме Модель не вытянет многошаговую логику и не выйдет за синтаксис одного диалекта
Генерация SQL и скриптов обработки Нужна подготовка данных до расчёта Ошибку в промежуточном шаге сложнее локализовать
Обязательная проверка схемы и прав Доступ к чувствительным таблицам Часть запросов отсекается, нужен актуальный каталог метаданных
Локальная модель в закрытом контуре Данные не покидают периметр заказчика Уже окно контекста, слабее на нестандартных формулировках
Гибрид: генерация + ручная ревизия Регламентная отчётность и регулярные расчёты Появляется задержка на ревизию, в контуре нужен инженер

Где проходит граница применимости модели

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

Ограничения по нагрузке и объёму данных

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

Этапы внедрения: от аудита источников до передачи

Начинаем не с модели, а с инвентаризации данных: пока неизвестно, где лежат показатели и кто отвечает за их корректность, генератор выдаёт убедительные, но неверные цифры.

  1. Аудит источников данных. Фиксируем, откуда берётся каждая метрика, где данные расходятся и какие таблицы дублируют друг друга.
  2. Словарь терминов. Согласуем формулировки показателей и разрезов, сопоставляем каждому термину таблицы и формулу расчёта.
  3. Доступы и роли. Открываем подключения только на чтение и разграничиваем видимость по подразделениям.
  4. Подключение к хранилищу. Загружаем схему, словарь и правила расчётов, проверяем связку на живых вопросах.
  5. Эталонные вопросы. Собираем контрольный набор типовых вопросов с заранее известными ответами.
  6. Замер точности. Сверяем ответы с эталоном, разбираем расхождения, дорабатываем словарь до целевой доли верных ответов.
  7. Передача решения. Отдаём инструкции, регламент пополнения словаря и обучаем команду.

Как описываем бизнес-термины для модели

Термин описывается тремя частями: как его называет бизнес, из каких таблиц берутся данные и по какой формуле считается показатель. Синонимы отделов привязываем к тому же термину — вопросы «выручка по региону» и «продажи в области» приводят к одному расчёту.

Как проверяем точность на контрольном наборе вопросов

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

Что передаём заказчику вместе с системой

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

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

Словарь терминов и правила перевода

Ключевой документ: он фиксирует, как слова бизнеса превращаются в поля базы. «Выручка» — это отгрузка или оплата, за какой период, с какими исключениями. Без словаря два аналитика задают один вопрос и получают разные цифры.

Регламент сопровождения при изменении схемы

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

Кейс: убрали ручные выгрузки и ускорили выборки

Что было до внедрения

Направление собирало операционную отчётность вручную: около 45 запросов в неделю уходило аналитикам, очередь выстраивалась на 2-3 дня. Каждый отчёт собирался выгрузками из нескольких систем, а одна и та же метрика в разных файлах считалась по-разному — доля расхождений доходила до 15%. Решения принимались по данным, которые успевали устареть, пока готовился отчёт.

Мы подключили слой Text-to-Code поверх существующего хранилища: сотрудник формулирует вопрос словами, система строит запрос к согласованным витринам и возвращает результат за секунды. Права доступа, справочники и определения метрик остались прежними — изменился только способ получить выборку.

Результат в цифрах и что изменилось в процессе

  • 68% запросов закрываются самостоятельно, без аналитика: отчёт «в моменте» вместо ожидания в очереди.
  • Время ожидания отчёта сократилось с 2-3 дней до минуты, повторный расчёт — сразу после уточнения формулировки.
  • Доля ошибок в расчётах упала с 15% до 3%: ответы строятся по одной семантике метрик, ручное копирование ушло.
  • Поток запросов аналитикам снизился с 45 до 13 в неделю — освободившееся время ушло на моделирование и качество данных.

«Раньше половина планёрок начиналась с вопроса, почему цифры не сходятся. Теперь спорим о решениях, а не о выгрузках», — руководитель направления аналитики Nordline Retail.

Чем генерация запросов отличается от панелей отчётов?

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

Генерация произвольных выборок начинается там, где вопрос появляется быстрее, чем его успевают описать в отчёте. Аналитик формулирует его словами, система собирает SQL или скрипт на Python по реальной схеме данных, сверяет имена таблиц и полей и возвращает результат. Ключевое здесь не «магия языка», а два ограничения: построение идёт только по описанной схеме и с правами на чтение, а сам запрос остаётся проверяемым — его можно показать, поправить и сохранить.

Одно не заменяет другое: панель предсказуема, дёшева в расчёте и годится для регулярных показателей, где все смотрят на одни и те же числа. Аналитика по запросу выигрывает в гибкости, но требует ресурсов на выполнение и валидации результата — без неё легко получить синтаксически корректный и бессмысленный ответ. Поэтому оба слоя разумно держать вместе, разводя их по назначению.

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

Технические сомнения перед стартом проекта

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

Насколько точно модель переводит вопрос в запрос?

Точность перевода проверяется не на демо, а на вашем наборе вопросов: мы собираем 50-100 реальных формулировок аналитиков, прогоняем их и сверяем результат с эталонными выборками. Модель возвращает не только запрос, но и промежуточное представление — по нему видно, где она угадала условие, а где подставила неверный фильтр. Схему таблиц и связи между ними система читает из метаданных хранилища, поэтому опирается на фактические имена полей, а не на догадки.

Тяжёлые выборки положат боевое хранилище?

Запросы уходят в отдельный контур исполнения с ограничением по времени и объёму выдачи, а не напрямую в промышленную базу. Система переписывает агрегаты, подставляет партиционирование по дате и отсекает лишние соединения — на типовых отчётах это сокращает время ответа в разы. Если оценка стоимости запроса превышает порог, он не запускается: пользователь получает предупреждение и предложение сузить период.

Как разграничить доступ между подразделениями?

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

Можно ли работать без внешних сервисов?

Да. В закрытом контуре разворачивается собственная модель перевода в запрос, без обращений к внешним API, — данные не покидают ваш периметр. Требования к оборудованию мы считаем заранее, исходя из объёма метаданных и числа одновременных пользователей.

Что с уже развёрнутым хранилищем?

Существующее хранилище остаётся источником истины: мы не переносим данные и не меняем схему, а подключаемся к нему как к внешнему источнику. Слой описаний — какие таблицы и поля доступны модели, как называются бизнес-сущности — настраивается поверх и обновляется по мере развития схемы.

Обсудим задачу и вернёмся с оценкой и планом

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

  • Список источников данных: какие базы, хранилища и файлы в работе, как часто меняется схема, есть ли витрины с уже согласованными метриками.
  • Примеры типовых вопросов: 15-30 формулировок от аналитиков и руководителей — на них настраивается генерация запросов, по ним же считается точность на приёмке.
  • Требования по доступам: учётная запись только на чтение, разрешённые схемы, куда системе можно записывать результат, что запрещено читать и сохранять в логах.
  • Ограничения контура: где разворачивается система, есть ли изолированный сегмент, свои правила хранения истории запросов и обезличивания данных.
  • Критерии результата: что считаем успехом — доля вопросов, закрываемых без инженера, время до первого ответа, доля расчётов с обязательной проверкой человеком.
  • Владельцы и приёмка: кто отвечает за метрики и кто принимает этапы плана внедрения.

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

Направления AI-разработки

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    815
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139