Перейти к основному содержимому

Часто задаваемые вопросы о семантическом слое dbt

Semantic Layer — это предложение dbt, которое позволяет пользователям централизованно определять свои метрики в рамках проекта dbt с использованием MetricFlow.

Semantic Layer предоставляет:

  • Динамическую генерацию SQL для вычисления метрик
  • API для запроса метрик и измерений
  • Первоклассные интеграции для запроса этих централизованных метрик в последующих инструментах

Semantic Layer работает на базе MetricFlow — компонента с открытым исходным кодом (source-available).

Обзор семантического слоя dbt

 Каковы основные преимущества использования семантического слоя dbt?

Основная ценность семантического слоя dbt заключается в централизации и обеспечении согласованности ваших метрик по всей организации. Кроме того, он позволяет вам:

  • Встречать ваших пользователей там, где они находятся, поддерживая различные API для интеграций, независимо от того, где ваши конечные пользователи потребляют данные.
  • Оптимизировать затраты, тратя меньше времени на подготовку данных для потребления.
  • Упростить ваш код, не дублируя логику метрик и позволяя MetricFlow выполнять сложные вычисления за вас.
  • Уполномочить заинтересованных лиц с богатым контекстом и гибкими, но управляемыми возможностями.
Эта диаграмма показывает, как семантический слой dbt работает с вашим стеком данных.Эта диаграмма показывает, как семантический слой dbt работает с вашим стеком данных.
 В чем основное отличие между семантическим слоем dbt и метриками dbt?

Метрики dbt — это устаревший пакет dbt, который использовался для определения метрик в dbt. Метрики dbt были заменены MetricFlow, более гибким и мощным движком, который сегодня составляет основу семантического слоя dbt.

MetricFlow вводит генерацию SQL в семантический слой dbt и предлагает более продвинутые возможности, чем метрики dbt, например:

  • Построение запросов — MetricFlow итеративно строит запросы, используя план потока данных, наш внутренний DAG для генерации SQL. В сравнении, метрики dbt полагались на шаблоны Jinja для построения SQL.
  • Соединения — MetricFlow также имеет сложный способ обработки соединений, который не поддерживался в метриках dbt. С MetricFlow вы можете легко получить доступ ко всем допустимым измерениям для ваших метрик на лету, даже если они определены в разных семантических моделях.
 Существует ли центр обсуждений семантического слоя dbt?

Да, конечно! Присоединяйтесь к сообществу dbt в Slack и каналу #dbt-cloud-semantic-layer в Slack для всех вопросов, связанных с семантическим слоем dbt.

 Как семантический слой dbt сочетается с различными подходами к моделированию (Medallion, Data Vault, Dimensional modeling)?

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

Основное внимание уделяется гибкости и производительности базовых запросов. Например:

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

Хотя семантический слой dbt будет работать в обоих случаях, лучше позволить MetricFlow обрабатывать некоторый уровень денормализации для вас, чтобы предоставить больше гибкости потребителям метрик.

 Какова стоимость семантического слоя dbt?

Семантический слой dbt измеряет использование в уникальных 'Запрошенных Метриках'. Обратитесь к Биллинг, чтобы узнать больше о ценообразовании.

Доступность

 Какие платформы данных поддерживаются семантическим слоем dbt?

Семантический слой dbt поддерживает следующие платформы данных:

  • Snowflake
  • BigQuery
  • Databricks
  • Redshift
  • Postgres
  • Trino

Поддержка других платформ данных, таких как Fabric, в настоящее время недоступна. Если вам интересно использовать dbt Semantic Layer с платформой данных, которой нет в этом списке, пожалуйста, свяжитесь с нами.

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

Да, семантический слой dbt совместим с dbt v1.6 или выше.

 Требуется ли для dbt Semantic Layer определённый тарифный план dbt?

Да, клиенты с тарифными планами dbt Starter, Enterprise или Enterprise+ могут получить доступ к dbt Semantic Layer. Некоторые функции, такие как кэширование и использование нескольких учётных данных, доступны только в планах Enterprise и Enterprise+.

 Есть ли способ использовать возможности семантического слоя dbt в dbt Core?

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

Пользователи dbt Core также могут запрашивать свой семантический слой локально с помощью командной строки. Однако они не смогут использовать API или доступные интеграции для динамического доступа к метрикам.

 Существует ли решение или путь лицензирования для организации, которая не использует dbt для конвейеров, но хотела бы внедрить семантический слой dbt?

Если вы заинтересованы в таком типе внедрения, пожалуйста, свяжитесь с нами здесь.

Как работает семантический слой dbt?

 Почему семантический слой dbt лучше, чем использование таблиц или моделей dbt для вычисления метрик?

Вы можете использовать таблицы и модели dbt для вычисления метрик как вариант, но это статический подход, который жесткий и трудоемкий в обслуживании. Это потому, что метрики редко полезны сами по себе: они обычно нуждаются в измерениях, уровнях и атрибутах, чтобы бизнес-пользователи могли эффективно анализировать (или разрезать и нарезать) данные.

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

С семантическим слоем dbt вам не нужно предварительно соединять или строить какие-либо таблицы; вместо этого вы можете просто добавить несколько строк кода в свою семантическую модель, и эти данные будут вычислены только по запросу.

Эта диаграмма показывает, как семантический слой dbt работает с вашим стеком данных.Эта диаграмма показывает, как семантический слой dbt работает с вашим стеком данных.
 Материализую ли я что-нибудь, когда определяю семантическую модель?

Нет, вы этого не делаете. При запросе семантического слоя dbt через API семантического слоя вы по умолчанию не материализуете никакие данные.

Семантический слой dbt динамически вычисляет метрику, используя базовые таблицы данных. Затем он возвращает результат конечному пользователю.

 Является ли семантический слой dbt физической копией ваших данных, хранящейся в вашем хранилище данных?

Семантический слой dbt не хранит физическую копию ваших данных. Он использует базовые таблицы для построения или вычисления запрашиваемого результата.

 Как семантический слой обрабатывает данные?

Semantic Layer в dbt является частью dbt platform. Он позволяет командам по работе с данными один раз централизованно определить метрики и затем получать к ним доступ из любого интегрированного аналитического инструмента, обеспечивая согласованные и единообразные ответы при работе с разными наборами данных. В рамках предоставления этого сервиса dbt Labs позволяет клиентам получать доступ к метрикам Semantic Layer. Клиентские данные проходят через Semantic Layer на обратном пути из хранилища данных.

dbt Labs обрабатывает это безопасным образом, используя шифрование и аутентификацию из хранилища данных клиента. В некоторых случаях такие данные могут временно кэшироваться в системе dbt Labs (данные не хранятся постоянно).

Сотрудники dbt Labs не могут получить доступ к кэшированным данным в ходе обычных бизнес-операций и должны иметь деловую необходимость и/или одобрение непосредственного руководителя для доступа к базовой инфраструктуре. Доступ будет предоставляться только при необходимости для предоставления клиентских услуг и никогда с целью обогащения dbt Labs.

Никакие данные хранилища клиента не сохраняются в системах dbt Labs. Мы предлагаем решение для кэширования, чтобы оптимизировать производительность запросов. Функция кэширования использует хранилище данных клиента, а не хранится в системах dbt Labs. Кроме того, эта функция активируется только через согласие клиента. Таким образом, кэширование всегда находится в руках клиента и на его усмотрение.

 Распространяется ли наше соглашение — Terms of Service (ToS) для dbt — на Semantic Layer?

Да, применяется.

 Где размещается MetricFlow? Как запросы проходят через MetricFlow и dbt и возвращаются конечному пользователю?

MetricFlow размещён в dbt. Запросы из Semantic Layer APIs направляются от нашего API‑шлюза в MetricFlow, который генерирует SQL для вычисления того, что запрашивает пользователь. Затем MetricFlow передаёт сгенерированный SQL обратно нашему шлюзу, который выполняет его на платформе данных.

 Как настроить семантический слой dbt?
  1. Вы определяете семантические модели в YAML-файлах, которые описывают ваши данные, включая сущности (для соединений), меры (с типами агрегации как строительные блоки для ваших метрик) и измерения (для разрезания и нарезки ваших метрик).

  2. Затем вы строите свои метрики поверх этих семантических моделей. Всё это делается в конфигурациях .yml, расположенных рядом с вашими dbt‑моделями в проектах.

  3. После того как вы определили метрики и семантические модели, вы можете настроить dbt Semantic Layer в dbt.

Прочитайте наше руководство быстрого старта семантического слоя dbt для получения дополнительной информации.

 Как работает кэширование в семантическом слое dbt?

Начиная с марта 2024 года, семантический слой dbt будет предлагать два уровня кэширования:

  • Кэш результатов, который кэширует результаты запросов на платформе данных, чтобы последующие запуски того же запроса были быстрее.
  • Декларативный кэш, который также находится на вашей платформе данных.
 Ожидает ли семантический слой dbt, что все модели будут в нормализованном формате?

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

 Как оптимизируются запросы, чтобы не сканировать больше данных, чем необходимо?

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

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

Задержка времени выполнения запросов низкая, порядка миллисекунд.

 Что если у разных команд разные определения?

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

Это можно управлять, настраивая, как метрика отображается в последующих инструментах, или настраивая сохраненные запросы для обработки различных ее вариантов.

Создание метрик и семантических моделей

 Могу ли я определить свои собственные агрегации?

MetricFlow в настоящее время не поддерживает пользовательские агрегации на мерах. Вы можете найти поддерживаемые типы агрегации здесь.

 Как идентифицируются соединения в семантической модели?

Соединения идентифицируются через сущности, определенные в семантической модели. Это ключи в вашем наборе данных. Вы можете указать foreign, unique, primary или natural соединения.

С несколькими семантическими моделями и сущностями в них MetricFlow создает граф, используя семантические модели как узлы и пути соединений как ребра, чтобы автоматически выполнять соединения. MetricFlow выбирает подходящий тип соединения и избегает фан-аут или хазм соединений с другими таблицами на основе типов сущностей. Вы можете найти поддерживаемые типы соединений здесь.

 Какова польза от использования “expr” в семантических моделях и конфигурациях метрик?

Expr (сокращение от “expression”) позволяет вам вставлять любой произвольный SQL, поддерживаемый вашей платформой данных, в любое определение меры, сущности или измерения.

Это полезно, если вы хотите, чтобы имя объекта в семантической модели отличалось от того, как оно называется в базе данных. Или если вы хотите включить логику в определение компонента, который вы создаете.

Спецификация MetricFlow намеренно предвзята, и мы предлагаем “expr” как выход, чтобы позволить разработчикам быть более выразительными.

 Поддерживаете ли вы полуаддитивные метрики?

Да, мы подходим к этому, указывая измерение, по которому метрика не может быть агрегирована (например, время). Вы можете узнать, как настроить полуаддитивные измерения здесь.

 Могу ли я использовать сущность как измерение?

Да, хотя сущности должны быть определены под “entities”, они могут быть запрошены как измерения в последующих инструментах. Кроме того, если сущность не используется для выполнения соединений между вашими семантическими моделями, вы можете по желанию определить ее как измерение.

 Могу ли я тестировать свои семантические модели и метрики?

Да! Вы можете проверять свои семантические узлы (семантические модели, метрики, сохраненные запросы) несколькими способами:

Доступные интеграции

 Какие интеграции поддерживаются сегодня?

Существует ряд приложений для работы с данными, которые имеют интеграции с семантическим слоем dbt, включая Tableau, Google Sheets, Hex и Mode, среди прочих.

Обратитесь к Доступные интеграции для получения дополнительной информации.

 Как я могу извлечь выгоду из использования семантического слоя dbt, если мой инструмент визуализации в настоящее время не поддерживается?

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

Хотя этот подход не предоставляет динамических преимуществ семантического слоя dbt, вы все равно получаете выгоду от централизованных метрик и использования конфигураций MetricFlow для определения, генерации и вычисления SQL для ваших метрик.

 Почему я должен использовать экспорты вместо определения представления в моей платформе данных?

Создание экспорта позволяет вам перенести ваши управляемые определения метрик в вашу платформу данных в виде таблицы или представления. Это означает, что ваша логика метрик управляется централизованно в dbt, а не как представление в вашей платформе данных, и гарантирует, что значения метрик остаются согласованными во всех интерфейсах.

 Могут ли описания метрик отображаться в сторонних инструментах?

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

Разрешения и доступ

 Как работают детализированные средства управления доступом с семантическим слоем dbt?

Семантический слой dbt использует service tokens или personal access tokens для аутентификации.

Service tokens сопоставляются с базовыми учетными данными платформы данных. Эти учетные данные управляют физическим доступом к исходным данным. Конфигурация учетных данных позволяет администраторам создавать учетные данные и связывать их с service tokens, которые затем можно передавать соответствующим командам для настройки подключения BI‑инструментов. Вы можете настраивать учетные данные и service tokens таким образом, чтобы они отражали структуру ваших команд и их роли.

Personal access tokens (PATs) обеспечивают аутентификацию на уровне пользователя. При использовании PATs для аутентификации при выполнении запросов к Semantic Layer применяются ваши персональные учетные данные для разработки.

В настоящее время учетные данные, которые вы настраиваете при настройке семантического слоя dbt, используются для каждого запроса. Любые физические политики доступа, связанные с вашими учетными данными, будут соблюдаться.

Реализация

 Как я могу реализовать dbt Mesh с семантическим слоем dbt

При использовании Семантического слоя dbt в контексте dbt Mesh, мы рекомендуем следующее:

  • У вас есть один отдельный проект, который содержит ваши семантические модели и метрики.
  • Затем, по мере построения Semantic Layer, вы можете делать кросс‑ссылки на dbt‑модели между различными проектами или пакетами, чтобы создавать семантические модели, используя двухаргументную функцию ref (ref('project_name', 'model_name')).
  • Проект dbt Semantic Layer служит глобальным источником истины для всех остальных ваших проектов.

Пример использования

Например, предположим, у вас есть публичная модель (fct_orders), которая находится в проекте jaffle_finance. При создании вашей семантической модели используйте следующий синтаксис для ссылки на модель:

models/metrics/semantic_model_name.yml
semantic_models:
- name: customer_orders
defaults:
agg_time_dimension: first_ordered_at
description: |
Март на уровне клиентов, агрегирующий заказы клиентов.
model: ref('jaffle_finance', 'fct_orders') # ref('project_name', 'model_name')
entities:
...остальная часть конфигурации...
dimensions:
...остальная часть конфигурации...
measures:
...остальная часть конфигурации...

Обратите внимание, что в параметре model мы используем функцию ref с двумя аргументами для ссылки на публичную модель fct_orders, определенную в проекте jaffle_finance.


 С каким 'слоем подготовки' должен взаимодействовать семантический слой dbt? Сырой, подготовительный или витрины?

Мы рекомендуем строить ваш семантический слой поверх слоя витрин, который представляет собой чистые и преобразованные данные из ваших моделей dbt.

 Должны ли учетные данные семантического слоя совпадать с учетными данными для производственных сред? Или они должны быть разными?

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

 Как семантический слой dbt поддерживает архитектурный дизайн dbt Mesh?

В настоящее время семантические модели могут быть созданы из моделей dbt, которые находятся в разных проектах (dbt Mesh). В будущем пользователи также смогут использовать концепции mesh на семантических объектах и определять метрики в разных проектах dbt.

 Как мне мигрировать с устаревшего семантического слоя?

Если вы используете устаревший семантический слой, мы настоятельно рекомендуем вам обновить вашу версию dbt до dbt v1.6 или выше, чтобы использовать последний семантический слой dbt. Обратитесь к специальному руководству по миграции для получения дополнительной информации.

Нашли ошибку?

0
Loading