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

Колонки моего seed изменились, и теперь я получаю ошибку при выполнении команды `seed`, что мне делать?

Если вы изменили колонки вашего seed, вы можете получить Database Error:

$ dbt seed
Running with dbt=0.16.0-rc2
Found 0 models, 0 tests, 0 snapshots, 0 analyses, 130 macros, 0 operations, 1 seed file, 0 sources

12:12:27 | Concurrency: 8 threads (target='dev_snowflake')
12:12:27 |
12:12:27 | 1 of 1 START seed file dbt_claire.country_codes...................... [RUN]
12:12:30 | 1 of 1 ERROR loading seed file dbt_claire.country_codes.............. [ERROR in 2.78s]
12:12:31 |
12:12:31 | Finished running 1 seed in 10.05s.

Completed with 1 error and 0 warnings:

Database Error in seed country_codes (seeds/country_codes.csv)
000904 (42000): SQL compilation error: error line 1 at position 62
invalid identifier 'COUNTRY_NAME'

Done. PASS=0 WARN=0 ERROR=1 SKIP=0 TOTAL=1

В этом случае вам следует повторно выполнить команду с флагом --full-refresh, как показано ниже:

dbt seed --full-refresh

Почему это необходимо?

Когда вы обычно выполняете dbt seed, dbt очищает существующую и вставляет данные заново. Этот подход позволяет избежать команды drop cascade, которая может привести к удалению зависимых объектов (которые могут использоваться вашими BI-пользователями!).

Однако, когда изменяются имена колонок или добавляются новые колонки, эти команды не выполнятся, так как структура таблицы изменилась.

Флаг --full-refresh заставит dbt выполнить drop cascade существующей таблицы перед её восстановлением.

0