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

Написание запросов с экспортами

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

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

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

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

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

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

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

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

Упрощенные изменения

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

Кэширование

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

Соображения

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

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

Для этих случаев используйте динамические API семантического слоя dbt вместо экспортов.

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

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

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

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

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

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

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

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

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

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

dbt sl export

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

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

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

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 Cloud оптимизирует рабочие процессы данных и обеспечивает доступ к данным в реальном времени. Это повышает эффективность и управление для более умных решений.

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

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

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

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

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

  1. После того как dbt завершит сборку моделей, сервер MetricFlow обрабатывает экспорты, компилирует необходимый SQL и выполняет этот SQL на вашей платформе данных. Он напрямую выполняет оператор "create table", чтобы данные оставались в вашей платформе данных.
  2. Просмотрите детали выполнения экспортов в журналах заданий и убедитесь, что экспорт был выполнен успешно. Это помогает устранить неполадки и обеспечить точность. Поскольку сохраненные запросы интегрированы в DAG dbt, все выходные данные, связанные с экспортами, доступны в журналах заданий.
  3. Ваши данные теперь доступны на платформе данных для запросов! 🎉

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

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

Связанные документы

0