Какой семантический слой выбрать
Останется только один
Содержание
Выбирать семантический слой по чек-листу фич — верный способ через год переписывать метрики с нуля. Рынок распался на четыре категории, и инструмент из каждой закрывает свою задачу. Если вы не поймёте разницу заранее, покупка превратится в дорогостоящее недоразумение.
Разберём четыре категории семантического стека и девять инструментов, которые реально стоит рассматривать в 2026 году. Для каждого покажу пример модели, плюсы и минусы, а в конце сведём всё в одну таблицу.
Четыре категории, а не одна
Термин «семантический слой» слишком широк. На практике это четыре разных типа инструментов, и они не взаимозаменяемы.
flowchart TD A[Семантический стек] --> B[Чистые семантические слои] A --> C[Встроенные в хранилище] A --> D[Встроенные в BI] A --> E[Контекстный слой] B --> B1[dbt Semantic Layer, Cube, AtScale] C --> C1[Snowflake Semantic Views, Databricks Metric Views] D --> D1[Looker/LookML, GoodData, MicroStrategy] E --> E1[Atlan]
- Чистые семантические слои определяют метрики в коде (YAML, SQL или DSL) и отдают их любому инструменту. Лидеры — dbt Semantic Layer, Cube, AtScale.
- Встроенные в хранилище определяют метрики прямо в дата-воркхаусе. Быстро, но привязывают вас к одному вендору: Snowflake Semantic Views или Databricks Metric Views.
- Встроенные в BI живут внутри BI-инструмента и задали сам тренд. Это Looker/LookML, GoodData, MicroStrategy ONE.
- Контекстный слой не считает метрики, а оборачивает их управляемым контекстом для ИИ-агентов. Типичный пример — Atlan.
Ключевая мысль: слой отвечает на вопрос «что значит метрика», а контекстный слой — «как ИИ-агент может этой метрикой пользоваться».
Чистые семантические слои
dbt Semantic Layer (MetricFlow)
Выбор команд, которые уже сидят на dbt. Метрики описываются в версионируемом YAML рядом с моделями, а стандарт Open Semantic Interchange делает определения переносимыми между BI и ИИ-агентами. Под капотом крутится MetricFlow — DSL для измерений, мер, сущностей и временной гранулярности.
Пример определения метрики в YAML:
# metrics/net_revenue.ymlsemantic_models: - name: orders # Имя семантической модели description: | Данные о заказах. Зерно таблицы — идентификатор заказа, то есть каждая строка — это один заказ. model: ref('orders') # Модель и схема dbt, на которых строится слой defaults: agg_time_dimension: metric_time entities: # Сущности — это ключи таблицы, по которым можно связывать данные. - name: order_id type: primary - name: customer type: foreign expr: customer_id measures: # Меры — это агрегации по колонкам, например суммы или количества. - name: order_total agg: sum dimensions: # Измерения бывают категориальными или временными. Они добавляют контекст к метрике, а типичный запрос выглядит как «Метрика по Измерению». - name: metric_time expr: cast(ordered_at as date) type: time type_params: time_granularity: day - name: customers # Имя второй семантической модели description: > Справочник клиентов. Зерно таблицы — одна строка на одного клиента. model: ref('customers') # Модель и схема dbt, на которых строится слой defaults: agg_time_dimension: first_ordered_at entities: # Сущности — это ключи таблицы, по которым можно связывать данные. - name: customer type: primary expr: customer_id dimensions: # Измерения бывают категориальными или временными. Они добавляют контекст к метрике, а типичный запрос выглядит как «Метрика по Измерению». - name: is_new_customer type: categorical expr: case when first_ordered_at is not null then true else false end - name: first_ordered_at type: time type_params: time_granularity: day
Плюсы:
- единый код-фёрст рабочий процесс с трансформациями
- OSI-переносимость
- широчайший набор готовых интеграций с BI (Hex, Mode, Lightdash, Tableau, Power BI)
- MCP-совместимый экспорт для ИИ-агентов.
Минусы:
- во многих конфигурациях нужен dbt Cloud
- определения живут в коде, а не в интерфейсе — аналитикам без инженерного бэкграунда сложнее
- смотреть в UI не получится.
Cube
Головной (headless) слой. Одно определение метрики, четыре API (SQL, REST, GraphQL, MDX), открытое ядро. Идеален, если метрики нужны одновременно BI-инструменту, продуктовому дашборду и ИИ-копайлоту. Движок преагрегаций кэширует запросы и выдаёт ответы за доли секунды.
Мы используем Cube Core уже несколько лет на крупных проектах, и он показывает себя очень хорошо. Благодаря ему удалось реализовать много действительно полезных, интересных и сложных решений.
Пример модели в Cube:
# schema/Orders.ymlcubes: - name: orders sql: SELECT * FROM orders measures: - name: total_amount sql: amount type: sum - name: net_revenue sql: "amount - refund" type: sum dimensions: - name: user_id sql: user_id type: string - name: created_at sql: created_at type: time joins: - name: users relationship: many_to_one sql: "{orders.user_id} = {users.id}"
Плюсы:
- один источник метрик для BI, встроенной аналитики и ИИ
- четыре API из одного определения
- открытое ядро (Cube Core) плюс управляемый Cube Cloud
- движок преагрегаций для быстрых ответов
- участник OSI.
Минусы:
- инженерная настройка тяжелее, чем у BI-нативных моделей
- экосистема готовых BI-интеграций меньше, чем у dbt SL и Looker
- self-hosted без Cube Cloud требует возни.
AtScale
Корпоративный вариант. Понимает MDX, SQL, DAX, REST и Python, автоматически строит агрегаты под миллиардные таблицы. Выбор компаний с наследием из Excel и OLAP-кубов, которым нужно, чтобы та же метрика работала в Power BI, Tableau, ThoughtSpot и кастомных приложениях.
Пример определения в AtScale (MDX-выражение для меры):
# Выручка по продуктуcube: salesmeasure: name: Revenue type: measure sql: SUM(sales.amount) format: currency drill_members: - [Product].[Product Name] - [Customer].[Country]
Плюсы:
- MDX + SQL + DAX + REST + Python из одного определения
- автоматическая генерация агрегатов без ручной настройки
- AI-Link отдаёт определения прямо агентам
- зрелые enterprise-безопасность и управление
- участник OSI.
Минусы:
- enterprise-прайс, не для маленьких команд
- настройка самая долгая
- оптимален при наследии OLAP-кубов, для greenfield — избыточен.
Встроенные в хранилище
Snowflake Semantic Views
Если вы уже живёте в одном хранилище, зачем поднимать отдельный сервис? Snowflake Semantic Views определяют метрики прямо в воркхаусе, наследуют права доступа платформы и отдаются нативному ИИ-агенту Cortex Analyst.
Пример определения метрики на SQL:
CREATE OR REPLACE METRIC VIEW sales_metrics ASSELECT order_month, SUM(amount) AS revenueFROM ordersGROUP BY order_month;-- Cortex Analyst читает метрику напрямую
Плюсы:
- разворачивается быстрее всех — метрики живут там же, где данные
- нативная работа с Cortex Analyst для text-to-SQL
- ролевой доступ наследуется из Snowflake
- Snowflake — участник OSI.
Минусы:
- жёсткая привязка к Snowflake, определения не переносятся в другой воркхаус
- новее dbt SL и Looker, функциональность ещё допиливается
- при гибридных стеках возникают проблемы перевода между dbt-моделями и снежными.
Databricks Metric Views
Для Databricks-команд аналог снежного варианта: метрики на SQL внутри Lakehouse, потребление через Genie, управление через Unity Catalog.
Пример определения (YAML-схема Metric View):
# metric_views/sales_metrics.yamlmetric_view: name: sales_metrics catalog: main schema: metrics metrics: - name: revenue expression: SUM(amount) dimensions: - name: order_month expression: DATE_TRUNC('month', created_at)
Плюсы:
- метрики консистентны с существующими Lakehouse-рабочими процессами
- нативный Genie-агент; интеграция с Unity Catalog для управления
- YAML/DDL схемы для код-фёрст подхода
Минусы:
- привязка к Databricks
- новее устоявшихся вариантов
- агентам не на Genie нужен дополнительный слой интеграции.
Встроенные в BI
Looker / LookML
Looker (в составе Google Cloud) задал код-фёрст шаблон, который потом скопировали dbt и Cube. LookML — первый язык моделирования, доведённый до продакшена в масштабе. Крепкая связка с Gemini и BigQuery.
Пример модели в LookML:
# orders.view.lkmlview: orders { dimension: created_at { type: time sql: ${TABLE}.created_at ;; } measure: revenue { type: sum sql: ${amount} ;; } measure: net_revenue { type: sum sql: ${amount} - ${refund} ;; }}
Плюсы:
- эталонный код-фёрст семантический слой
- глубокая интеграция с Gemini и оптимизация под BigQuery
- Looker Modeler позволяет шарить определения наружу.
Минусы:
- привязка к Looker, портируемость наружу ограничена
- меньше готовых интеграций, чем у dbt SL.
GoodData
Заточен под встраивание аналитики в чужие продукты. Мультитенантность у него встроена в модель данных: одно определение метрики обслуживает тысячи клиентских тенантов с изоляцией доступа.
Пример модели в GoodData (Logical Data Model):
# LDM для мультитенантного SaaSlogical_data_model: datasets: - name: orders columns: - name: amount ldmType: FACT - name: order_date ldmType: DATE references: - name: tenant ldmType: REFERENCE dataset: tenants
Плюсы:
- мультитенантность по умолчанию
- white-label дашборды с изоляцией тенантов
- headless-режим для API-потребления
- частичный OSI.
Минусы:
- нишевый — не общий слой для внутренней аналитики
- история с ИИ-агентами развита слабее, чем у dbt SL или Cube
- экосистема интеграций меньше.
MicroStrategy ONE
Тяжёлая платформа с многолетним наследием для банков, страховщиков и ритейла. Модель данных существует с тех пор, как термин «семантический слой» ещё не придумали.
Пример: метрики задаются в схематической модели, а для встраивания и ИИ используются HyperIntelligence и агент Auto. Кода в классическом смысле тут меньше — это больше про визуальный конструктор и API.
Плюсы:
- десятилетия прод-зрелости
- HyperIntelligence для встраивания контекста в корпоративные приложения
- агент Auto для запросов на естественном языке
- наследие прав доступа и широкие коннекторы.
Минусы:
- самый тяжёлый и долгий цикл внедрения
- готовность к ИИ-агентам отстаёт от Snowflake, Databricks и dbt SL
- нет OSI — риск портируемости.
Контекстный слой
Atlan
Atlan — не семантический слой, а слой над ним. Он читает определения из любых семантических движков, привязывает их к lineage, владельцу, глоссарию и правам доступа, а потом отдаёт этот управляемый контекст ИИ-агентам через MCP-сервер.
Семантический слой отвечает, что значит метрика. Контекстный слой отвечает, кто её утвердил, откуда она и кому её можно показывать. Для агентов это решает проблему доверия к цифре.
flowchart LR SL[dbt / Cube / Snowflake] --> SLD[Определения метрик] SLD --> ATL[Контекстный слой Atlan] ATL --> GOV[Lineage, владелец, глоссарий, доступ] GOV --> MCP[MCP-сервер] MCP --> AG[ИИ-агент]
Плюсы:
- объединяет управление и lineage поверх нескольких семантических слоёв
- отдаёт контекст агентам через MCP
- связка с слоем поднимает точность ответов в разы по сравнению с работой на одних схемах.
Минусы:
- не заменяет семантический слой — нужен движок под ним
- ценность максимальна при уже существующем слое или каталоге
- enterprise-прайс.
Сравнительная таблица
| Инструмент | Категория | Кому подходит | API для ИИ | OSI | Привязка |
|---|---|---|---|---|---|
| dbt Semantic Layer | Чистый | dbt-команды | SQL, JDBC, GraphQL, MCP | Да | dbt Cloud |
| Cube | Чистый (headless) | Встраиваемая аналитика, ИИ | SQL, REST, GraphQL, MDX | Да | Нет |
| AtScale | Чистый (enterprise) | Большие BI-стеки, OLAP-наследие | SQL, MDX, REST, Python | Да | Нет |
| Snowflake Semantic Views | В хранилище | Snowflake-команды, Cortex Analyst | SQL, Cortex | Да | Snowflake |
| Databricks Metric Views | В хранилище | Databricks-команды, Genie | SQL, Genie | Частично | Databricks |
| Looker / LookML | BI-native | Google Cloud, Gemini | SQL, Looker API | Частично | Looker |
| GoodData | BI-native | SaaS, встраивание | REST, GoodData Cloud | Частично | GoodData |
| MicroStrategy ONE | BI-native | Fortune 500, наследие | SQL, MicroStrategy API | Нет | MicroStrategy |
| Atlan | Контекстный | ИИ-агенты поверх слоёв | MCP, REST | Да | Поверх слоёв |
Как выбирать по своему кейсу
- dbt-команда, стандартизирующая метрики → dbt Semantic Layer. Если не хотите зависеть от dbt Cloud — Cube.
- Встроенная аналитика и ИИ-приложения → Cube: много API, одно определение.
- Один воркхаус, нативный ИИ → Snowflake Semantic Views или Databricks Metric Views.
- Большой enterprise со смешанным BI (Power BI, Excel, Tableau) → AtScale, Cube
- ИИ-агенты поверх нескольких семантических слоёв → контекстный слой поверх выбранного движка.
Не попали в список
Некоторые инструменты называют себя семантическими слоями, но живут в соседних категориях: OLAP-ускорители, оркестраторы агентов и BI с встроенным моделированием. Надёжный тест — спросить, какой семантический слой инструмент потребляет или заменяет. Если ответ «мы и есть слой», а по сути это ускорение запросов или дашборды — это категория-сосед, и использовать её вместо настоящего слоя значит копить интеграционный долг.
Итог
Выбор семантического слоя — это вопрос не «какой круче», а «где живёт ваша бизнес-логика и кто ей пользуется». Чистые слои закрывают BI и ИИ, встроенные в хранилище — скорость и простоту в рамках одного вендора, BI-нативные — глубину внутри одного инструмента, а контекстный слой добавляет то, что нужно ИИ-агентам: управляемость и доверие к цифре.
Главный совет: не давайте контекстному слою или каталогу заменять шаг выбора чистого семантического слоя. Сначала выберите, где считаются метрики, а потом решайте, как ими будут пользоваться агенты.