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

Почему dbt compile требует подключения к платформе данных

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

dbt compile

Команда dbt compile генерирует исполняемый SQL из файлов source, model, test и analysis. dbt compile похож на dbt run, за исключением того, что он не материализует скомпилированный SQL модели в существующую таблицу. Таким образом, до момента материализации, dbt compile и dbt run схожи, потому что оба требуют подключения к платформе данных, выполняют запросы и имеют переменную execute, установленную в True.

Однако, стоит учитывать следующие моменты:

  • Вам не нужно выполнять dbt compile перед dbt run
  • В dbt, compile не означает parse. Это потому, что parse проверяет ваш написанный YAML, настроенные теги и так далее.

Интроспективные запросы

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

Эти интроспективные запросы включают:

  • Заполнение кеша отношений. Для получения дополнительной информации обратитесь к руководству Создание новых материализаций. Кеширование ускоряет проверки метаданных, включая проверку того, существует ли инкрементальная модель уже на платформе данных.
  • Разрешение макросов, таких как run_query или dbt_utils.get_column_values, которые вы используете для шаблонизации вашего SQL. Это необходимо, потому что dbt должен выполнить эти запросы во время компиляции SQL модели.

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

Для настройки проекта вам нужен профиль подключения (profiles.yml, если вы используете CLI). Этот файл необходим, потому что конфигурация проекта зависит от его содержимого. Например, вам может понадобиться использовать {{target}} для условных конфигураций или знать, на какой платформе вы работаете, чтобы выбрать правильный вариант SQL.

0