Поделиться через


Подключение к dbt Core

Примечание.

В этой статье рассматривается dbt Core — версия dbt для локального компьютера разработки, которая взаимодействует с хранилищами Databricks SQL и кластерами Azure Databricks в рабочих областях Azure Databricks. Чтобы использовать размещенную версию dbt (называется dbt Cloud) или использовать Partner Connect для быстрого создания хранилища SQL в рабочей области, а затем подключения к dbt Cloud см. в статье Connect to dbt Cloud.

dbt (средство построения данных) — это среда разработки, позволяющая аналитикам и специалистам по анализу данных преобразовывать данные с помощью простых инструкций выборки (SELECT). dbt преобразует такие инструкции выборки в таблицы и представления. dbt компилирует код в необработанные инструкции SQL, а затем выполняет его в указанной базе данных в Azure Databricks. dbt поддерживает шаблоны и лучшие методики программирования для совместной работы, такие как управление версиями, документация, модульная архитектура и другие.

dbt не извлекает и не загружает данные. dbt работает только с этапом преобразования, используя архитектуру "преобразование после загрузки". В dbt предполагается, что у вас уже есть копия данных в базе.

В этой статье рассматривается использование dbt Core. dbt Core позволяет писать код dbt в текстовом редакторе или в интегрированной среде разработки на локальном компьютере разработки, а затем запускать dbt из командной строки. В dbt Core предусмотрен интерфейс командной строки (CLI) dbt. Интерфейс dbt CLI является бесплатным и имеет открытый код.

Также доступна размещенная версия dbt под названием dbt Cloud. dbt Cloud изначально предоставляется с поддержкой таких функций, как планирование заданий, CI/CD, предоставление документации, мониторинг и оповещения, а также интегрированная среда разработки (IDE). Дополнительные сведения см. в разделе Подключение к dbt Cloud. План dbt Cloud Developer включает одно бесплатное рабочее место разработчика. Также доступны платные планы Team и Enterprise. Дополнительные сведения см. в разделе цен на dbt на веб-сайте dbt.

Поскольку версии dbt Core и dbt Cloud могут использовать размещенные репозитории git (например, на GitHub, GitLab или BitBucket), с помощью использовать dbt Core можно создать проект dbt и опубликовать его для пользователей dbt Cloud. Дополнительные сведения см. в статьях Создание проекта dbt и Использование существующего проекта на веб-сайте dbt.

Общие сведения о dbt см. в приведенном ниже видео на YouTube (26 минут).

Требования

Перед установкой dbt Core необходимо установить на компьютере локальной разработки следующие компоненты:

  • Python 3.7 или более поздней версии;
  • служебную программу для создания виртуальных сред Python (например, pipenv).

Для проверки подлинности также требуется одно из следующих действий.

  • (Рекомендуется) dbt Core в качестве приложения OAuth в вашей учетной записи. Эта функция включена по умолчанию.

  • Личный маркер доступа

    Примечание.

    В качестве рекомендации по обеспечению безопасности при проверке подлинности с помощью автоматизированных средств, систем, сценариев и приложений Databricks рекомендуется использовать маркеры OAuth.

    Если вы используете проверку подлинности маркера личного доступа, Databricks рекомендует использовать личные маркеры доступа, принадлежащие субъектам-службам, а не пользователям рабочей области. Сведения о создании маркеров для субъектов-служб см. в разделе "Управление маркерами" для субъекта-службы.

Шаг 1. Создайте и активируйте виртуальное окружение Python

На этом шаге используется pipenv, чтобы создать виртуальное окружение Python. Мы рекомендуем использовать виртуальное окружение Python, так как оно изолирует версии пакетов и зависимости кода от конкретного окружения, независимо от версий пакета и зависимостей кода в других окружениях. Это помогает сократить число несовпадений версий пакета и конфликтов зависимостей кода.

  1. В окне терминала перейдите в пустой каталог (при необходимости сначала создайте этот каталог). Эта процедура создает пустой каталог с именем dbt_demo в корне домашнего каталога пользователя.

    Unix, Linux, macOS

    mkdir ~/dbt_demo
    cd ~/dbt_demo
    

    Windows

    mkdir %USERPROFILE%\dbt_demo
    cd %USERPROFILE%\dbt_demo
    
  2. В этом пустом каталоге создайте файл с именем Pipfile с приведенным ниже содержимым. Этот Pipfile указывает pipenv использовать Python версии 3.8.6. Если вы используете другую версию, замените 3.8.6 на нужный номер версии.

    [[source]]
    url = "https://pypi.org/simple"
    verify_ssl = true
    name = "pypi"
    
    [packages]
    dbt-databricks = "*"
    
    [requires]
    python_version = "3.8.6"
    

    Примечание.

    В предыдущей строке dbt-databricks = "*" указывает pipenv использовать последнюю версию пакета dbt-databricks. В рабочих сценариях следует заменить * конкретной версией пакета, который необходимо использовать. Databricks рекомендует версию 1.6.0 или больше пакета dbt-databricks. См. раздел Журнал выпусков dbt-databricks на веб-сайте индекса пакетов Python (PyPI).

  3. Создайте виртуальное окружение Python в этом каталоге, запустив pipenv и указав версию Python, которую нужно использовать. Эта команда задает Python версии 3.8.6. Если вы используете другую версию, замените 3.8.6 на нужный номер версии:

    pipenv --python 3.8.6
    
  4. Установите адаптер Databricks dbt, запустив pipenv с параметром install. При этом в Pipfile из PyPI будут установлены пакеты, в том числе пакет адаптера Databricks dbt — dbt-databricks. Пакет адаптера Databricks dbt автоматически устанавливает dbt Core и другие зависимости.

    Внимание

    Если на локальном компьютере разработки используется любая из следующих операционных систем, сначала необходимо выполнить дополнительные действия: CentOS, MacOS, Ubuntu, Debian и Windows. См. раздел "Соответствует ли моя операционная система требованиям" на странице Использование pip для установки dbt на веб-сайте dbt Labs.

    pipenv install
    
  5. Активируйте это виртуальное окружение, выполнив pipenv shell. Чтобы подтвердить активацию, перед запросом в окне терминала появится (dbt_demo). Виртуальное окружение начинает использовать указанную версию Python и изолирует все версии пакетов и зависимости кода в этом новом окружении.

    pipenv shell
    

    Примечание.

    Чтобы деактивировать это виртуальное окружение, выполните команду exit. (dbt_demo) перестанет отображаться перед запросом. Если вы запустите python --version или pip list при отключенном виртуальном окружении, вы можете увидеть другую версию Python, другой список доступных пакетов или версий пакета, либо и то, и другое.

  6. Убедитесь, что виртуальное окружение работает с ожидаемой версией Python. Для этого выполните команду python с параметром --version.

    python --version
    

    Если отображается не та версия Python, которая вам нужна, убедитесь, что вы активировали виртуальное окружение, выполнив pipenv shell.

  7. Убедитесь, что виртуальное окружение работает под управлением ожидаемой версии dbt и адаптера Databricks dbt. Для этого запустите dbt с параметром --version.

    dbt --version
    

    Если отображается не та версия dbt или адаптера Databricks dbt, которая вам нужна, убедитесь, что вы активировали виртуальное окружение, выполнив pipenv shell. Если по-прежнему отображается неправильная версия, попробуйте заново установить dbt или адаптер Databricks dbt после активации виртуального окружения.

Шаг 2. Создание проекта dbt, указание и проверка параметров подключения

На этом шаге вы создадите проект dbt, который представляет собой коллекцию связанных каталогов и файлов, необходимых для использования dbt. Затем настройте профили подключения, которые содержат параметры подключения к кластеру Azure Databricks и (или) хранилищу SQL. Чтобы повысить безопасность, проекты и профили dbt по умолчанию хранятся в разных расположениях.

Совет

Вы можете подключиться к существующим кластеру или хранилищу SQL или создать новые.

  • Использование существующего кластера или хранилища SQL может быть эффективным для нескольких проектов dbt, для использования dbt в команде или для вариантов использования при разработке.
  • Новый кластер или хранилище SQL позволяют запускать один проект dbt в изоляции для вариантов использования в рабочей среде, а также использовать автоматическое завершение для экономии средств, если этот проект dbt не запущен.

Используйте Azure Databricks, чтобы создать новый кластер или хранилище SQL, а затем создайте ссылку на созданные или существующие кластер или хранилища SQL из профиля dbt.

  1. Если виртуальное окружение все еще активировано, выполните команду dbt init с именем своего проекта. Эта процедура создает проект с именем my_dbt_demo.

    dbt init my_dbt_demo
    
  2. При появлении запроса на выбор databricks или spark базу данных введите номер, соответствующий databricks.

  3. При появлении запроса на host получение значения выполните следующие действия:

    • В качестве кластера введите значение Server Hostname (Имя узла сервера) с вкладки Advanced Options, JDBC/ODBC (Дополнительные параметры, JDBC/ODBC) кластера Azure Databricks.
    • Введите значение Имя узла сервера с вкладки Сведения о подключении для хранилища SQL.
  4. При появлении запроса на http_path получение значения выполните следующие действия:

    • В качестве кластера введите значение HTTP Path (Путь HTTP) с вкладки Advanced Options, JDBC/ODBC (Дополнительные параметры, JDBC/ODBC) кластера Azure Databricks.
    • Введите значение Путь HTTP с вкладки Сведения о подключении для хранилища SQL.
  5. Чтобы выбрать тип проверки подлинности, введите номер, соответствующий use oauth (рекомендуется) или use access token.

  6. Если вы выбрали use access token тип проверки подлинности, введите значение личного маркера доступа Azure Databricks.

    Примечание.

    В качестве рекомендации по обеспечению безопасности при проверке подлинности с помощью автоматизированных средств, систем, сценариев и приложений Databricks рекомендуется использовать личные маркеры доступа, принадлежащие субъектам-службам, а не пользователям рабочей области. Сведения о создании маркеров для субъектов-служб см. в разделе "Управление маркерами" для субъекта-службы.

  7. При появлении запроса на desired Unity Catalog option значение введите номер, соответствующий use Unity Catalog или not use Unity Catalog.

  8. Если вы решили использовать каталог Unity, введите требуемое значение catalog при появлении запроса.

  9. Введите нужные значения для schema и threads при появлении соответствующего запроса.

  10. dbt записывает данные в файл profiles.yml. Расположение этого файла указывается в выходных данных команды dbt init. Это расположение также можно вывести позже, выполнив команду dbt debug --config-dir. Теперь этот файл можно открыть, чтобы изучить и проверить его содержимое.

    Если вы выбрали use oauth тип проверки подлинности, добавьте профиль проверки подлинности "компьютер — компьютер" (M2M) или " profiles.ymlпользователь — компьютер" (U2M).

    Примеры см. в статье Настройка входа Azure Databricks из dbt Core с идентификатором Microsoft Entra.

    Databricks не рекомендует указывать секреты profiles.yml напрямую. Вместо этого задайте идентификатор клиента и секрет клиента в качестве переменных среды.

  11. Убедитесь, что сведения о подключении правильны, проходя в my_dbt_demo каталог и выполнив dbt debug команду.

    Если вы выбрали use oauth тип проверки подлинности, вам будет предложено войти в систему с помощью поставщика удостоверений.

    Внимание

    Перед началом работы убедитесь, что кластер или хранилище SQL запущены.

    Вы должны увидеть результат, аналогичный приведенному ниже:

    cd my_dbt_demo
    dbt debug
    
    ...
    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
    

Следующие шаги

Дополнительные ресурсы