Пишите запросы с помощью экспортами 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:
Соображения
Экспорты предлагают множество преимуществ, и важно отметить некоторые случаи использования, которые выходят за рамки этих преимуществ:
- Бизнес-пользователи все еще могут испытывать трудности с потреблением из десятков, сотен или тысяч таблиц, и выбор правильной может быть сложной задачей.
- Бизнес-пользователи также могут совершать ошибки при агрегации и фильтрации из предварительно построенных таблиц.
Для этих сценариев использования вместо экспорта следует применять динамические Semantic Layer APIs.
Запуск экспортов
Прежде чем вы сможете запускать экспорты в среде разработки или в продакшене, необходимо убедиться, что в вашем dbt‑проекте настроены сохранённые запросы и экспорты. В конфигурации сохранённого запроса вы также можете использовать кэширование вместе с планировщиком заданий dbt, чтобы кэшировать часто используемые запросы, ускорять выполнение и снижать вычислительные затраты.
Существует два способа запуска экспорта:
- Запускайте экспорты в среде разработки, используя CLI dbt, чтобы проверить результат перед запуском в продакшене (вы можете настраивать экспорты в Studio IDE, однако запускать их напрямую в Studio IDE пока не поддерживается).
- Если вы используете Studio IDE, применяйте
dbt buildдля запуска экспортов. Убедитесь, что у вас включена переменная окружения.
- Если вы используете Studio IDE, применяйте
- Запускайте экспорты в продакшене, используя планировщик заданий dbt, чтобы выполнять эти запросы непосредственно в вашей платформе данных.
Экспорты в разработке
Вы можете запустить экспорт в вашей среде разработки, используя ваши учетные данные разработки, если вы хотите протестировать результат экспорта перед производством.
Этот раздел объясняет различные команды и опции, доступные для запуска экспортов в разработке.
-
Используйте команду
dbt sl exportдля тестирования и генерации экспортов в вашей среде разработки для одного сохраненного запроса. Вы также можете использовать флаг--select, чтобы указать конкретные экспорты из сохраненного запроса. -
Используйте команду
dbt sl export-all, чтобы запускать экспорты для нескольких сохраненных запросов одновременно. Эта команда предоставляет удобный способ управления и выполнения экспортов для нескольких запросов одновременно, экономя время и усилия. -
Если вы используете Studio IDE, используйте команду
dbt buildдля запуска экспортов. Перед выполнением команды убедитесь, что у вас включена переменная окружения.
Экспорт для одного сохранённого запроса
Используйте следующую команду для запуска экспортов в CLI dbt:
dbt sl export
Следующая таблица перечисляет параметры команды dbt sl export, используя префикс флага -- для указания параметров:
| 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 оптимизирует рабочие процессы с данными и обеспечивает доступ к данным в реальном времени. Это повышает эффективность и уровень управления данными, помогая принимать более обоснованные решения.
Экспорты используют учетные данные по умолчанию для производственной среды. Чтобы включить экспорты для выполнения сохраненных запросов и записи их в вашей платформе данных, выполните следующие шаги:
- Установите переменную окружения в dbt.
- Создайте и выполните экспорт job run.
Установите переменную окружения
- Нажмите Deploy в верхней панели навигации и выберите Environments.
- Выберите Environment variables.
- Установите переменную окружения, указав ключ
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 в этом задании, также будут выполнены. Чтобы убедиться, что ваши данные экспорта актуальны, выполните экспорт как шаг нижнего уровня (после модели).
Создание и выполнение экспортов
-
Создайте задание развертывания и убедитесь, что переменная окружения
DBT_EXPORT_SAVED_QUERIES=TRUEустановлена, как описано в разделе Установка переменной окружения.- Это позволяет вам выполнять любой экспорт, который нужно обновить после сборки модели.
- Используйте синтаксис селектора опцию
--selectили-sв вашей команде сборки, чтобы указать конкретную модель dbt или сохраненный запрос для выполнения. Например, чтобы выполнить все сохраненные запросы, зависящие от семантической моделиorders, используйте следующую команду:
dbt build --select orders+ -
После того как dbt завершит построение моделей, сервер MetricFlow обрабатывает экспорты, компилирует необходимый SQL и выполняет этот SQL в вашей платформе данных. Он напрямую выполняет оператор
create table, поэтому данные остаются внутри вашей платформы данных. -
Просмотрите детали выполнения экспортов в логах заданий и убедитесь, что экспорт был выполнен успешно. Это помогает при поиске и устранении проблем, а также для проверки корректности. Поскольку сохранённые запросы интегрированы в DAG dbt, все выходные данные, связанные с экспортами, доступны в логах заданий.
-
Теперь ваши данные доступны в платформе данных для выполнения запросов! 🎉
