Семантический слой без семантического слоя
В 2023 году ребята из нашей BI команды придумали сохранять описание метрик прямо в репо dbt, про что и рассказали вот на этом митапе. Тогда казалось, что это простой другой способ хранения метрик относительно обычного в конфле. 3 года все старались и поддерживали эту историю (привет, Венера, Вова и Оля).
И вот наступил 2026 год и внезапно оказалось, что без семантического слоя агенты не очень понимают запросы к ним от обычных людей. Со всех сторон нам стали говорить - семантический слой, семантический слой. Опять на поверхность стали всплывать такие штуки как cube.dev, dbt опять прикрутил yml к новой идее. Я не верю в возможность реализации отдавалища с таким интерфейсом, потому что слишком высок уровень абстракций. И в конце получается что-то типа движков Qlik Sense и иже с ними.
А вот в хорошее актуальное описание метрик и разрезов я не то что верю, оно у нас есть. Теперь любой ответ агента на вопрос строится на базовом алгоритме: найди метрику (и разрез), найди ее реализацию в dbt, выполни запрос в StarRocks - дай ответ пользователю. А за счет хранения метрик рядом с изменяемой кодовой базой затраты на поддержку актуализации описаний ниже буквально за счет обновления метрики в том же мерж реквесте вместе с реализацией или изменением метрики.
Да, я опять написал сервис на гошке, который делает мостик между агентами и метриками :)
metrics-gate — read-only методология метрик для агентов.
Он индексирует manifest.json после dbt docs generate и отдаёт четыре инструмента по HTTP и MCP: search, get_metric, get_dimension, list_metrics. Два способа завести методологию в dbt — macro-docs stubs (macros/metrics/) и semantic metrics (MetricFlow), плюс разрезы из markdown-таблицы в exposure. Поиск лексический, не векторный: для методологии важнее точные попадания по id/alias и предсказуемый «не найдено», без embedding-пайплайна и «почти той же» метрики.
Пример SQL в доке помечен как executable=false и диалектом из конфига — агент не путает пример из Vertica/Spark с базой, куда считать. Один инстанс = один свежий индекс; агенты и люди ходят в API, а не в устаревший клон.
· 3 ч
Предсказуемое «не найдено» здесь полезнее похожей метрики: ошибку поиска хотя бы видно. Я бы ещё возвращал версию manifest вместе с методологией и сохранял её рядом с SQL агента. Если определение метрики изменится, останется возможность объяснить вчерашний ответ. Такая связка уже есть?
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён
· 3 ч
Да, насколько помню в ответе приходит жсон с хешом манифеста
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён