Интеграция с семантическим слоем dbt с использованием лучших практик
Введение
Чтобы ваш инструмент вписался в мир семантического слоя, dbt Labs предлагает некоторые рекомендации по лучшим практикам, как раскрывать метрики и позволять пользователям взаимодействовать с ними без проблем.
Это развивающееся руководство, которое предназначено для предоставления рекомендаций на основе нашего опыта. Если у вас есть какие-либо отзывы, мы будем рады их услышать!
📹 Узнайте о семантическом слое dbt с помощью видеокурсов по запросу!
Изучите наш курс по семантическому слою dbt, чтобы узнать, как определять и запрашивать метрики в вашем проекте dbt.
Кроме того, погрузитесь в мини-курсы по запросам к семантическому слою dbt в ваших любимых инструментах: Tableau, Excel, Hex и Mode.
Предварительные требования
Чтобы построить интеграцию с семантическим слоем dbt:
-
Мы предлагаем JDBC API и GraphQL API. Обратитесь к специальному API семантического слоя dbt для получения более подробной информации о технической интеграции.
-
Ознакомьтесь с ключевыми концепциями семантического слоя dbt и MetricFlow. Существует два основных объекта:
- Семантические модели — Узлы в вашем семантическом графе, соединенные через сущности как ребра. MetricFlow принимает семантические модели, определенные в YAML-файлах конфигурации, в качестве входных данных и создает семантический граф, который вы можете использовать дл я запроса метрик.
- Метрики — Могут быть определены в тех же YAML-файлах, что и ваши семантические модели, или разделены на отдельные YAML-файлы в любых других подкаталогах (при условии, что эти подкаталоги также находятся в том же репозитории проекта dbt).
Параметры подключения
API семантического слоя dbt аутентифицируются с помощью environmentId
, SERVICE_TOKEN
и host
.
Мы рекомендуем предоставлять пользователям отдельные поля ввода с этими компонентами для аутентификации (dbt Cloud предоставит эти параметры пользователю).
Раскрытие метаданных для dbt Labs
При создании интеграции мы рекомендуем раскрывать определенные м етаданные в запросе для аналитики и целей устранения неполадок.
Пожалуйста, отправляйте нам следующий заголовок с каждым запросом:
'X-dbt-partner-source': 'Your-Application-Name'
Кроме того, было бы полезно, если бы вы также включили электронную почту и имя пользователя человека, генерирующего запрос из вашего приложения.
Используйте лучшие практики при раскрытии метрик
Лучшие практики для раскрытия метрик сведены в пять тем:
- Управление — Рекомендации по установлению ограничений для управляемой работы с данными.
- Обнаруживаемость — Рекомендации по созданию удобных для пользователя взаимодействий с данными.
- Организация — Организуйте метрики и и змерения для всех аудиторий, используйте сохраненные запросы.
- Гибкость запросов — Позвольте пользователям запрашивать либо одну метрику без измерений, либо несколько метрик с измерениями.
- Контекст и интерпретация — Контекстуализируйте метрики для лучшего анализа; раскрывайте определения, метаданные, происхождение и свежесть.
Управление и отслеживаемость
При работе с более управляемыми данными важно установить четкие ограничения. Вот некоторые рекомендации:
-
Контроль агрегаций — Пользователям обычно не следует разрешать изменять агрегации, если они не выполняют постобработку данных семантического слоя (например, анализ по годам).
-
Выравнивание временных рядов и использование metric_time — Убедитесь, что пользо ватели видят метрики по правильным временным рядам. При отображении графиков метрик использование не по умолчанию измерения временной агрегации может привести к неверным интерпретациям. Хотя пользователи все еще могут группировать по другим временным измерениям, они должны быть осторожны, чтобы не создавать трендовые линии с неправильными временными осями.
При просмотре одной или нескольких метрик пользователи должны использоватьmetric_time
как основное временное измерение, чтобы гарантировать, что они смотрят на правильные временные ряды для метрики(ок).
Таким образом, при создании приложения мы рекомендуем раскрыватьmetric_time
как отдельное, "особое" временное измерение. Это измерение всегда будет согласовываться со всеми метриками и будет общим для них. Другие временные измерения все еще могут быть просмотрены и сгруппированы, но наличие четкого разграничения между измерениемmetric_time
и другими временными измерениями проясняет, чтобы люди не путали, как метрики должны быть построены.
Также, когда пользователь запрашивает изменение временной гранулярност и для основного временного ряда, запрос, который выполняет ваше приложение, должен использоватьmetric_time
, так как это всегда даст вам правильный срез. В связи с этим мы также настоятельно рекомендуем иметь способ раскрыть, на какое измерениеmetric_time
фактически отображается для пользователей, которые могут быть не знакомы. Наши API позволяют вам получить фактические подлежащие временные измерения, которые составляют metric_time (например,transaction_date
), чтобы вы могли раскрыть их для своих пользователей. -
Согласованность единиц измерения — Если поддерживаются единицы измерения, важно избегать неправильного построения данных с различными единицами. Обеспечение согласованности в представлении единиц предотвратит путаницу и неправильное толкование данных.
-
Отслеживаемость изменений метрик и измерений — Когда пользователи изменяют названия метрик и измерений для отчетов, важно иметь механизм отслеживания, чтобы связать их с исходным названием метрики.