Отладка ошибок
Обновлен
Troubleshooting
dbt Core
dbt Cloud
Beginner
Menu
Неверный файл
Общий процесс отладки
Научиться отлаживать — это навык, который сделает вас отличным специалистом в вашей роли!
- Прочитайте сообщение об ошибке — при написании кода для dbt мы стараемся сделать сообщения об ошибках максимально полезными. Сообщение об ошибке, которое генерирует dbt, обычно содержит тип ошибки (подробнее об этих типах ошибок ниже) и файл, в котором произошла ошибка.
- Проверьте файл, который вызвал проблему, и посмотрите, есть ли немедленное решение.
- Изолируйте проблему — например, запуская одну модель за раз или отменяя код, который вызвал сбой.
- Ознакомьтесь с скомпилированными файлами и журналами.
- Директория
target/compiled
содержитselect
-запросы, которые вы можете выполнить в любом редакторе запросов. - Директория
target/run
содержит SQL, который dbt выполняет для построения ваших моделей. - Файл
logs/dbt.log
содержит все запросы, которые выполняет dbt, и дополнительную информацию. Последние ошибки будут внизу файла. - Пользователи dbt Cloud: Используйте вышеуказанное или вкладку
Details
в выводе команды. - Пользователи dbt Core: Обратите внимание, что ваш редактор кода может скрывать эти файлы из дерева Помощь по VSCode).
- Директория
- Если вы действительно застряли, попробуйте попросить о помощи. Прежде чем это сделать, потратьте время на то, чтобы хорошо сформулировать свой вопрос, чтобы другие могли быстро диагностировать проблему.
Типы ошибок
Ниже мы перечислили некоторые из распространенных ошибок. Полезно понимать, что делает dbt за кулисами, когда вы выполняете команду, такую как dbt run
.
Шаг | Описание | Тип ошибки |
---|---|---|
Инициализация | Проверьте, что это проект dbt, и что dbt может подключиться к хранилищу данных | Runtime Error |
Парсинг | Проверьте, что фрагменты Jinja в файлах .sql и файлы .yml валидны. | Compilation Error |
Валидация графа | Скомпилируйте зависимости в граф. Проверьте, что он ацикличен. | Dependency Error |
Выполнение SQL | Запустите модели | Database Error |
Давайте углубимся в некоторые из этих ошибок и как их отлаживать 👇. Примечание: не все ошибки здесь охвачены!
Ошибки времени выполнения
Примечание: если вы используете IDE dbt Cloud для работы над своим проектом, вы вряд ли столкнетесь с этими ошибками.
Не проект dbt
Running with dbt=0.17.1
Encountered an error:
Runtime Error
fatal: Not a dbt project (or any of the parent directories). Missing dbt_project.yml file
Отладка
- Используйте
pwd
, чтобы проверить, находитесь ли вы в правильной директории. Если нет, используйтеcd
, чтобы перейти туда! - Проверьте, есть ли у вас файл с именем
dbt_project.yml
в корневой директории вашего проекта. Вы можете использоватьls
, чтобы перечислить файлы в директории, или также открыть директорию в редакторе кода и увидеть файлы в "дереве".
Не удалось найти профиль
Running with dbt=0.17.1
Encountered an error:
Runtime Error
Could not run dbt
Could not find profile named 'jaffle_shops'
Отладка
- Проверьте ключ
profile:
в вашемdbt_project.yml
. Например, этот проект использует профильjaffle_shops
(обратите внимание на множественное число):
dbt_project.yml
profile: jaffle_shops # обратите внимание на множественное число
- Проверьте профили, которые у вас есть в файле
profiles.yml
. Например, этот профиль называетсяjaffle_shop
(обратите внимание на единственное число).
profiles.yml
jaffle_shop: # это не соответствует ключу profile:
target: dev
outputs:
dev:
type: postgres
schema: dbt_alice
... # другие детали подключения
- Обновите их так, чтобы они совпадали.
- Если вы не можете найти свой файл
profiles.yml
, выполнитеdbt debug --config-dir
для помощи:
$ dbt debug --config-dir
Running with dbt=0.17.1
To view your profiles.yml file, run:
open /Users/alice/.dbt
- Затем выполните
open /Users/alice/.dbt
(с учетом корректировки), и проверьте, есть ли у вас файлprofiles.yml
. Если его нет, настройте его, используя эти документы
Не удалось подключиться
Encountered an error:
Runtime Error
Database error while listing schemas in database "analytics"
Database Error
250001 (08001): Failed to connect to DB: your_db.snowflakecomputing.com:443. Incorrect username or password was specified.
Отладка
- Откройте ваш файл
profiles.yml
(если вы не уверены, где он находится, выполнитеdbt debug --config-dir
) - Подтвердите, что ваши учетные данные верны — возможно, вам потребуется работать с администратором базы данных, чтобы подтвердить это.
- После обновления учетных данных выполните
dbt debug
, чтобы проверить, можете ли вы подключиться
$ dbt debug
Running with dbt=0.17.1
Using profiles.yml file at /Users/alice/.dbt/profiles.yml
Using dbt_project.yml file at /Users/alice/jaffle-shop-dbt/dbt_project.yml
Configuration:
profiles.yml file [OK found and valid]
dbt_project.yml file [OK found and valid]
Required dependencies:
- git [OK found]
Connection:
...
Connection test: OK connection ok
Неверный файл dbt_project.yml
Encountered an error while reading the project:
ERROR: Runtime Error
at path []: Additional properties are not allowed ('hello' was unexpected)
Error encountered in /Users/alice/jaffle-shop-dbt/dbt_project.yml
Encountered an error:
Runtime Error
Could not run dbt
Отладка
- Откройте ваш файл
dbt_project.yml
. - Найдите ошибочный ключ (например,
hello
, как указано в "'hello' was unexpected")
dbt_project.yml
name: jaffle_shop
hello: world # это не разрешено
- Используйте справочный раздел для файлов
dbt_project.yml
, чтобы исправить эту проблему. - Если вы используете ключ, который является допустимым согласно документации, проверьте, что вы используете последнюю версию dbt с помощью
dbt --version
.