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

Пишите запросы с помощью экспортами StarterEnterpriseEnterprise +

Экспорты расширяют возможности saved queries, выполняя сохранённые запросы и записывая результат в таблицу или представление (view) на вашей платформе данных. Сохранённые запросы — это способ сохранять и повторно использовать часто применяемые запросы в MetricFlow. Экспорты выводят эту функциональность на новый уровень за счёт следующего:

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

По сути, экспорты ведут себя как любые другие таблицы на вашей платформе данных — они позволяют запрашивать определения метрик через любой SQL‑интерфейс или подключать downstream‑инструменты без первоклассной интеграции с Semantic Layer. Выполнение экспорта учитывается в использовании queried metrics. Запросы к итоговой таблице или представлению, созданным экспортом, не учитываются как использование queried metrics.

Предварительные условия

  • У вас есть аккаунт dbt на тарифе Starter или Enterprise.
  • Вы используете одну из следующих платформ данных: Snowflake, BigQuery, Databricks, Redshift или Postgres.
  • Вы используете версию dbt 1.7 или новее.
  • У вас настроен Semantic Layer configured в вашем dbt‑проекте.
  • У вас есть окружение dbt с включённым планировщиком заданий.
  • В вашем dbt‑проекте у вас есть saved query и настроенный export. В конфигурации рекомендуется использовать caching, чтобы кэшировать часто используемые запросы, повышать производительность и снижать затраты на вычисления.
  • У вас установлен CLI dbt. Обратите внимание, что экспорты пока не поддерживаются в Studio IDE.

Преимущества экспортов

Следующий раздел объясняет основные преимущества использования exports:

 DRY-представление

В настоящее время создание таблиц часто предполагает генерацию десятков, сотен или даже тысяч таблиц, которые денормализуют данные в сводные таблицы или таблицы витрин метрик. Основное преимущество exports заключается в создании представления логики в стиле «Don’t Repeat Yourself (DRY)» для построения каждой метрики, измерения, соединения, фильтра и т.д. Это позволяет переиспользовать эти компоненты для долгосрочной масштабируемости, даже если вы заменяете вручную написанные SQL-модели ссылками на метрики или измерения в сохранённых запросах.

 Более простые изменения

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

 Кэширование

Используйте exports для предварительного заполнения кэша, чтобы заранее вычислять данные, необходимые для обслуживания пользователей через динамические API семантического слоя (Semantic Layer).

Соображения

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

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

Для этих сценариев использования вместо экспорта следует применять динамические Semantic Layer APIs.

Запуск экспортов

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

Существует два способа запуска экспорта:

Экспорты в разработке

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

Этот раздел объясняет различные команды и опции, доступные для запуска экспортов в разработке.

  • Используйте команду dbt sl export для тестирования и генерации экспортов в вашей среде разработки для одного сохраненного запроса. Вы также можете использовать флаг --select, чтобы указать конкретные экспорты из сохраненного запроса.

  • Используйте команду dbt sl export-all, чтобы запускать экспорты для нескольких сохраненных запросов одновременно. Эта команда предоставляет удобный способ управления и выполнения экспортов для нескольких запросов одновременно, экономя время и усилия.

  • Если вы используете Studio IDE, используйте команду dbt build для запуска экспортов. Перед выполнением команды убедитесь, что у вас включена переменная окружения.

Экспорт для одного сохранённого запроса

Используйте следующую команду для запуска экспортов в CLI dbt:

dbt sl export

Следующая таблица перечисляет параметры команды dbt sl export, используя префикс флага -- для указания параметров:

ПараметрыТипОбязательныйОписание
nameСтрокаОбязательныйИмя объекта export.
saved-queryСтрокаОбязательныйИмя сохраненного запроса, который может быть использован.
selectСписок или строкаНеобязательныйУкажите имена экспортов для выбора из сохраненного запроса.
excludeСтрокаНеобязательныйУкажите имена экспортов для исключения из сохраненного запроса.
export_asСтрокаНеобязательныйТип экспорта для создания из доступных типов export_as в конфигурации. Доступные опции: table или view.
schemaСтрокаНеобязательныйСхема для использования при создании таблицы или представления.
aliasСтрокаНеобязательныйПсевдоним таблицы для использования при записи таблицы или представления.
Loading table...

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

dbt sl export --saved-query sq_name

Вывод будет выглядеть примерно так:

Polling for export status - query_id: 2c1W6M6qGklo1LR4QqzsH7ASGFs..
Export completed.

Использование флага select

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

Например, следующая команда запускает export_1 и export_2 и не работает с флагами --alias или --export_as:

dbt sl export --saved-query sq_name --select export_1,export2
Переопределение конфигураций экспорта

Флаг --select в основном используется для включения или исключения конкретных экспортов. Если вам нужно изменить эти настройки, вы можете использовать следующие флаги для переопределения конфигураций экспорта:

  • --export-as — Определяет тип материализации (таблица или представление) для экспорта. Это создает новый экспорт с собственными настройками и полезно для тестирования в разработке.
  • --schema — Указывает схему для использования при записи таблицы или представления.
  • --alias — Назначает пользовательский псевдоним для записываемой таблицы или представления. Это переопределяет имя экспорта по умолчанию.

Будьте осторожны. Флаг --select не может использоваться с alias или schema.

Например, вы можете использовать следующую команду для создания нового экспорта с именем new_export в виде таблицы:

dbt sl export --saved-query sq_number1 --export-as table --alias new_export

Экспорты для нескольких сохраненных запросов

Используйте команду dbt sl export-all, чтобы запускать экспорты для нескольких сохраненных запросов одновременно. Это отличается от команды dbt sl export, которая запускает экспорты только для одного сохраненного запроса. Например, чтобы запустить экспорты для нескольких сохраненных запросов, вы можете использовать:

dbt sl export-all

Вывод будет выглядеть примерно так:

Exports completed:
- Created TABLE at `DBT_SL_TEST.new_customer_orders`
- Created VIEW at `DBT_SL_TEST.new_customer_orders_export_alias`
- Created TABLE at `DBT_SL_TEST.order_data_key_metrics`
- Created TABLE at `DBT_SL_TEST.weekly_revenue`

Polling completed

Команда dbt sl export-all предоставляет гибкость для управления несколькими экспортами в одной команде.

Экспорты в производстве

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

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

  1. Установите переменную окружения в dbt.
  2. Создайте и выполните экспорт job run.

Установите переменную окружения

  1. Нажмите Deploy в верхней панели навигации и выберите Environments.
  2. Выберите Environment variables.
  3. Установите переменную окружения, указав ключ DBT_EXPORT_SAVED_QUERIES и значение TRUE (DBT_EXPORT_SAVED_QUERIES=TRUE).

Это гарантирует, что сохранённые запросы и экспорты будут включены в ваш dbt build job. Например, запуск dbt build -s sq_name эквивалентен выполнению dbt sl export --saved-query sq_name в планировщике задач dbt.

Если экспорты не нужны, вы можете установить значение(я) на FALSE (DBT_EXPORT_SAVED_QUERIES=FALSE).

Добавьте переменную окружения, чтобы запускать экспорты в продакшн-запуске.Добавьте переменную окружения, чтобы запускать экспорты в продакшн-запуске.

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

Создание и выполнение экспортов

  1. Создайте задание развертывания и убедитесь, что переменная окружения DBT_EXPORT_SAVED_QUERIES=TRUE установлена, как описано в разделе Установка переменной окружения.

    • Это позволяет вам выполнять любой экспорт, который нужно обновить после сборки модели.
    • Используйте синтаксис селектора опцию --select или -s в вашей команде сборки, чтобы указать конкретную модель dbt или сохраненный запрос для выполнения. Например, чтобы выполнить все сохраненные запросы, зависящие от семантической модели orders, используйте следующую команду:
      dbt build --select orders+
  2. После того как dbt завершит построение моделей, сервер MetricFlow обрабатывает экспорты, компилирует необходимый SQL и выполняет этот SQL в вашей платформе данных. Он напрямую выполняет оператор create table, поэтому данные остаются внутри вашей платформы данных.

  3. Просмотрите детали выполнения экспортов в логах заданий и убедитесь, что экспорт был выполнен успешно. Это помогает при поиске и устранении проблем, а также для проверки корректности. Поскольку сохранённые запросы интегрированы в DAG dbt, все выходные данные, связанные с экспортами, доступны в логах заданий.

  4. Теперь ваши данные доступны в платформе данных для выполнения запросов! 🎉

Часто задаваемые вопросы

 Могу ли я иметь несколько экспортов в одном сохраненном запросе?
 Как я могу запустить все экспорты для сохраненного запроса?
 Буду ли я запускать дублирующие экспорты, если несколько моделей зависят от моего сохраненного запроса?
 Могу ли я ссылаться на экспорт как на модель dbt, используя ref()
 Как выбрать saved_queries по их типу ресурса?

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

0
Loading