Вопросы к строкам таблицы в DuckDB
Расширение добавляет в SQL функции, которые спрашивают Jev о строках таблицы и возвращают типизированные значения.

Что это решает
Расширение DuckDB позволяет задать вопрос о каждой строке таблицы прямо в SQL. Оно возвращает не текст для последующего разбора, а SQL-значение: ENUM, DOUBLE или STRUCT — в зависимости от заданных критериев.
Классифицировать строки таблицы прямо в SQL
Почему критерии должны быть константой
Функция получает текст строки и литерал с вариантами ответа. jev_choice делает из списка вариантов тип ENUM; jev_score возвращает число по заданной шкале; jev_noul — вероятность «да»; jev_ask объединяет несколько вопросов в STRUCT. Чтобы DuckDB знал тип колонки ещё на стадии планирования запроса, набор критериев нельзя менять от строки к строке.
Это даёт SQL возможность сразу сортировать, фильтровать и агрегировать результат без JSON-парсера. Пустой набор вариантов, дубли и некорректная шкала отклоняются при планировании, а не посреди большой таблицы.
Как считать стоимость большого запроса
По README один вызов модели приходится на строку, поэтому обработка 100 тысяч строк — это не один запрос. Расширение отправляет строки параллельно небольшими группами, повторяет временные сбои с задержкой и кеширует одинаковые запросы на время процесса. Но вызов функции в двух местах SQL-запроса может означать две оценки той же строки; лучше вычислить результат один раз и затем обращаться к нему.
Служебная функция jev_usage() показывает число обращений, попадания в кеш и токены. Это позволяет оценить расход на небольшой выборке до запуска по всему массиву.
Практическая задача: триаж тикетов
Опубликованный пример одновременно определяет тип обращения, серьёзность и срочность по тексту тикета. Результат можно сохранить как STRUCT и затем извлечь его поля в SELECT. Важный момент: значения вроде «срочно» задаются описанием критерия, а не угадываются из названия SQL-колонки.
Как попробовать самому
- 01Собрать расширение по инструкции проекта и создать секрет DuckDB с API-ключом Jev.
- 02Начать с 5–10 строк и одного
jev_choice, проверив описания вариантов и SQL-тип результата. - 03Для нескольких характеристик использовать
jev_ask, посмотретьjev_usage()и только потом расширять выборку.
Ограничение этого проекта
Это API-вызовы по строкам, а не бесплатная локальная функция. Перед обработкой таблиц с конфиденциальными данными проверьте состав передаваемого текста и стоимость полной выборки.