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

Настройка 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.

Пример:

~/.dbt/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 с этой поддержкой.

0