Настройка SQLite
Некоторая основная функциональность может быть ограничена. Если вы заинтересованы в участии, ознакомьтесь с исходным кодом для каждого из перечисленных ниже репозиториев.
- Поддерживается: Community
- Авторы: Jeff Chiu (https://github.com/codeforkjeff)
- Репозиторий на GitHub: codeforkjeff/dbt-sqlite
- Пакет на PyPI:
dbt-sqlite
- Канал в Slack: n/a
- Поддерживаемая версия dbt Core: v1.1.0 и новее
- Поддержка dbt Cloud: Not Supported
- Минимальная версия платформы данных: SQlite Version 3.0
Установка dbt-sqlite
Используйте pip
для установки адап тера. До версии 1.8 установка адаптера автоматически устанавливала dbt-core
и любые дополнительные зависимости. Начиная с версии 1.8, установка адаптера не устанавливает автоматически dbt-core
. Это связано с тем, что адаптеры и версии dbt Core были разделены, и мы больше не хотим перезаписывать существующие установки dbt-core.
Используйте следующую команду для установки:
Конфигурация dbt-sqlite
Для конфигурации, специфичной для SQLite, пожалуйста, обратитесь к конфигурациям SQLite.
Начиная с выпуска dbt-core 1.0.0, версии dbt-sqlite синхронизированы с той же основной+минорной версией dbt-core.
- версии 1.1.x этого адаптера работают с dbt-core 1.1.x
- версии 1.0.x этого адаптера работают с dbt-core 1.0.x
- версии 0.2.x этого адаптера работают с dbt 0.20.x и 0.21.x
- версии 0.1.x этого адаптера работают с dbt 0.19.x
- версии 0.0.x этого адаптера работают с dbt 0.18.x
Подключение к SQLite с помощью dbt-sqlite
Цели SQLite должны быть настроены с использованием следующей конфигурации в вашем файле profiles.yml
.
Пример:
your_profile_name:
target: dev
outputs:
dev:
type: sqlite
threads: 1
database: 'database'
schema: 'main'
schemas_and_paths:
main: 'file_path/database_name.db'
schema_directory: 'file_path'
#optional fields
extensions:
- "/path/to/sqlean/crypto.so"
Описание полей профиля SQLite
Поле | Описание |
---|---|
type | Обязательно. Должно быть установлено в sqlite . |
threads | Обязательно. Должно быть установлено в 1 . SQLite блокирует всю базу данных при записи, поэтому значение > 1 не поможет. |
database | Обязательно, но значение произвольное, так как в SQLite нет части 'database' в именах отношений, поэтому оно удаляется из вывода ref() и из SQL везде. Тем не менее, оно должно быть установлено в конфигурации и используется dbt внутренне. |
schema | Значение 'schema' должно быть определено в schema_paths ниже. В большинстве случаев это должно быть main. |
schemas_and_paths | Соединяет схемы с путями: по крайней мере одна из них должна быть 'main' |
schema_directory | Каталог, где все файлы *.db подключаются как схемы, используя базовое имя файла как имя схемы, и где создаются новые схемы. Это может пересекаться с каталогами файлов в schemas_and_paths, если нет конфликтов. |
extensions | Необязательно. Список путей к файлам расширений SQLite для загрузки. crypto.so необходим для работы снимков; см. ниже раздел о расширениях SQLlite. |
Ограничения
-
Схемы реализованы как подключенные файлы баз данных. (SQLite объединяет базы данных и схемы.)
-
SQLite автоматически присваивает 'main' файлу, к которому вы изначально подключаетесь, поэтому это должно быть определено в вашем профиле. Другие схемы, определенные в вашем профиле, подключаются при создании соединения с базой данных.
-
Если dbt нужно создать новую схему, она будет создана в
schema_directory
какschema_name.db
. Удаление схемы приводит к удалению всех ее отношений и отсоедин ению файла базы данных от сессии. -
Имена схем хранятся в определениях представлений, поэтому, когда вы обращаетесь к файлу базы данных, отличному от 'main', вне dbt, вам нужно будет подключить его с тем же именем, иначе представления не будут работать.
-
SQLite не позволяет представлениям в одной схеме (т.е. файле базы данных) ссылаться на объекты в другой схеме. Вы получите эту ошибку от SQLite: "view [someview] cannot reference objects in database [somedatabase]". Вы должны установить
materialized='table'
в моделях, которые ссылаются на другие схемы.
-
-
Материализации упрощены: они удаляют и пересоздают модель, вместо выполнения резервного копирования и замены новой модели, которую поддерживают другие адаптеры баз данных dbt. Этот выбор был сделан, потому что SQLite не поддерживает
DROP ... CASCADE
илиALTER VIEW
и не предоставляет информацию о зависимостях отношений в чем-то похожем на information_schema. Эти ограничения делают действительно сложным правильную работу функции резервного копирования и замены. Учитывая, как SQLite агрессивно блокирует базу данных, вероятно, это не стоит усилий.
Расширения SQLite
Для работы снимков вам понадобится модуль crypto
от SQLean, чтобы получить функцию md5()
. Рекомендуется установить все модули SQLean, так как они предоставляют многие общие SQL-функции, отсутствующие в SQLite.
Предварительно скомпилированные бинарные файлы доступны для загрузки на странице репозитория SQLean на GitHub. Вы также можете скомпилировать их самостоятельно, если хотите.
Укажите на эти файлы модулей в конфигурации вашего профиля, как показано в примере выше.
Похоже, что Mac OS поставляется с библиотеками SQLite, которые не поддерживают загрузку расширений, поэтому это не будет работать "из коробки". Соответственно, снимки не будут работать. Если вам нужна функциональность снимков, вам нужно будет скомпилировать SQLite/python или найти дистрибутив python для Mac OS с этой поддержкой.