Почему 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.