Conexión a dbt Core

Nota:

En este artículo se trata dbt Core, una versión de dbt para la máquina de desarrollo local que interactúa con los almacenes de Databricks SQL y los clústeres de Azure Databricks dentro de las áreas de trabajo de Azure Databricks. Para usar en su lugar la versión hospedada de dbt (denominada dbt Cloud), o para usar Partner Connect para crear rápidamente un almacén de SQL dentro del área de trabajo y, luego, conectarlo a dbt Cloud, consulte Conexión a dbt Cloud.

dbt (herramienta de compilación de datos) es un entorno de desarrollo que permite a los analistas e ingenieros de datos transformar datos simplemente escribiendo instrucciones select. dbt controla la conversión de estas instrucciones select en tablas y vistas. dbt compila el código en SQL sin procesar y, después, ejecuta ese código en la base de datos especificada en Azure Databricks. dbt admite patrones y procedimientos recomendados de creación de código en colaboración, como control de versiones, documentación, modularidad, y muchos más.

dbt no extrae ni carga datos. dbt se centra solo en el paso de transformación, mediante una arquitectura de "transformación después de la carga". dbt supone que ya tiene una copia de los datos en la base de datos.

Este artículo se centra en el uso de dbt Core. dbt Core permite escribir código dbt en el editor de texto o el IDE que prefiera en la máquina de desarrollo local y, luego, ejecutar dbt desde la línea de comandos. dbt Core incluye la interfaz de la línea de comandos (CLI) de dbt. La CLI de dbt es gratuita y de código abierto.

También está disponible una versión hospedada de dbt denominada dbt Cloud. dbt Cloud incluye compatibilidad llave en mano para programar trabajos, CI/CD, documentación de servicio, supervisión y alertas, y un entorno de desarrollo integrado (IDE). Para más información, consulte Conexión a dbt Cloud. El plan dbt Cloud Developer proporciona un puesto de desarrollador gratuito; pero también hay planes de pago Team y Enterprise disponibles. Para más información, consulte Precios de dbt en el sitio web de dbt.

Dado que dbt Core y dbt Cloud pueden usar repositorios de Git hospedados (por ejemplo, en GitHub, GitLab o BitBucket), puede utilizar dbt Core para crear un proyecto de dbt y, luego, ponerlo a disposición de los usuarios de dbt Cloud. Para más información, consulte Creación de un proyecto de dbt y Uso de un proyecto existente en el sitio web de dbt.

Para información general sobre dbt, vea el siguiente vídeo de YouTube (26 minutos).

Requisitos

Antes de instalar dbt Core, debe instalar lo siguiente en la máquina de desarrollo local:

  • Python 3.7 o versiones superiores
  • Una utilidad para crear entornos virtuales de Python (como pipenv)

También necesita una de las siguientes opciones para autenticarse:

  • (Recomendado) dbt Core habilitado como una aplicación de OAuth en su cuenta. Esta opción está habilitada de manera predeterminada.

  • Un token de acceso personal

    Nota:

    Como procedimiento recomendado de seguridad al autenticarse con herramientas automatizadas, sistemas, scripts y aplicaciones, Databricks recomienda usar tokens de OAuth.

    Si usa la autenticación de tokens de acceso personal, Databricks recomienda usar tokens de acceso personales que pertenecen a entidades de servicio en lugar de usuarios del área de trabajo. Para crear tókenes para entidades de servicio, consulte Administración de tokens de acceso para una entidad de servicio.

Paso 1: Creación y activación de un entorno virtual de Python

En este paso, usará pipenv para crear un entorno virtual de Python. Se recomienda usar un entorno virtual de Python, ya que aísla las versiones de paquetes y las dependencias de código de ese entorno específico, independientemente de las versiones del paquete y las dependencias de código dentro de otros entornos. Esto ayuda a reducir las discrepancias inesperadas en la versión del paquete y las colisiones de dependencias de código.

  1. Desde el terminal, cambie a un directorio vacío y cree primero ese directorio si es necesario. Este procedimiento crea un directorio vacío denominado dbt_demo en la raíz del directorio principal del usuario.

    Unix, Linux, MacOS

    mkdir ~/dbt_demo
    cd ~/dbt_demo
    

    Windows

    mkdir %USERPROFILE%\dbt_demo
    cd %USERPROFILE%\dbt_demo
    
  2. En este directorio vacío, cree un archivo denominado Pipfile con el siguiente contenido. Este archivo pip indica a pipenv que use la versión 3.8.6 de Python. Si prefiere usar otra versión, reemplace 3.8.6 por el número de versión deseado.

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

    Nota:

    La línea anterior dbt-databricks = "*" indica a pipenv que use la versión más reciente del paquete dbt-databricks. En escenarios de producción, debe reemplazar * por la versión específica del paquete que quiere usar. Databricks recomienda la versión 1.6.0 o una posterior del paquete dbt-databricks. Consulte el historial de versiones de dbt-databricks en el sitio web del índice de paquetes de Python (PyPI).

  3. Cree un entorno virtual de Python en este directorio ejecutando pipenv y especificando la versión de Python que se va a usar. Este comando especifica la versión 3.8.6 de Python. Si prefiere usar otra versión, reemplace 3.8.6 por el número de versión adecuado.

    pipenv --python 3.8.6
    
  4. Instale el adaptador de Databricks para dbt ejecutando pipenv con la opción install. Como resultado, se instalan los paquetes de Pipfile, que incluye el paquete del adaptador de Databricks para dbt, dbt-databricks, desde PyPI. El paquete del adaptador de Databricks para dbt instala automáticamente dbt Core y otras dependencias.

    Importante

    Si la máquina de desarrollo local usa cualquiera de los siguientes sistemas operativos, primero debe completar pasos adicionales: CentOS, MacOS, Ubuntu, Debian y Windows. Consulte la sección "¿Mi sistema operativo tiene requisitos previos?" de Uso de pip para instalar dbt en el sitio web de dbt Labs.

    pipenv install
    
  5. Active este entorno virtual mediante la ejecución de pipenv shell. Para confirmar la activación, el terminal muestra (dbt_demo) antes del aviso. El entorno virtual comienza a usar la versión especificada de Python y aísla todas las versiones de paquetes y dependencias de código dentro de este nuevo entorno.

    pipenv shell
    

    Nota:

    Para desactivar este entorno virtual, ejecute exit. (dbt_demo) desaparece desde antes del aviso. Si ejecuta python --version o pip list con este entorno virtual desactivado, es posible que vea una versión diferente de Python, una lista diferente de paquetes disponibles o versiones de paquetes, o ambas cosas.

  6. Para confirmar que el entorno virtual ejecuta la versión esperada de Python, ejecute python con la opción --version.

    python --version
    

    Si se muestra una versión inesperada de Python, asegúrese de que ha activado el entorno virtual mediante la ejecución de pipenv shell.

  7. Confirme que el entorno virtual ejecuta las versiones esperadas de dbt y el adaptador de Databricks para dbt ejecutando dbt con la opción --version.

    dbt --version
    

    Si se muestra una versión inesperada de dbt o el adaptador de Databricks para dbt, asegúrese de que ha activado el entorno virtual mediante la ejecución de pipenv shell. Si todavía se muestra una versión inesperada, intente instalar de nuevo dbt o el adaptador de Databricks para dbt después de activar el entorno virtual.

Paso 2: Creación de un proyecto de dbt y especificación y prueba de la configuración de conexión

En este paso, creará un proyecto de dbt, que es una colección de directorios y archivos relacionados necesarios para usar dbt. A continuación, configurará los perfiles de conexión, que contienen la configuración de conexión a un clúster de Azure Databricks, un almacén de SQL, o ambos. Para aumentar la seguridad, los proyectos y perfiles de dbt se almacenan en ubicaciones independientes de forma predeterminada.

Sugerencia

Puede conectarse a un clúster o a un almacén de SQL existentes, o crear otros nuevos.

  • Un clúster o un almacén de SQL existentes pueden ser eficaces para varios proyectos de dbt, para usar dbt en un equipo o para casos de uso de desarrollo.
  • Un clúster o un almacén de SQL nuevos permiten ejecutar un único proyecto de dbt de forma aislada para los casos de uso de producción, así como aprovechar la terminación automática para ahorrar costos cuando ese proyecto de dbt no se está ejecutando.

Use Azure Databricks para crear un clúster o un almacén de SQL nuevos y, luego, haga referencia a los nuevos o a los existentes desde el perfil de dbt.

  1. Con el entorno virtual aún activado, ejecute el comando dbt init con un nombre para el proyecto. Este procedimiento crea un proyecto denominado my_dbt_demo.

    dbt init my_dbt_demo
    
  2. Cuando se le pregunte si desea usar una base de datos databricks o spark, escriba el número que corresponda a databricks.

  3. Cuando se le solicite un valor host, haga lo siguiente:

    • Escriba el valor de Server Hostname (Nombre de host del servidor) de la pestaña Advanced Options, JDBC/ODBC (Opciones avanzadas, JDBC/ODBC) del clúster de Azure Databricks.
    • En el caso de un almacén de SQL, escriba el valor de Nombre de host del servidor que figura en la pestaña Detalles de conexión del almacén de SQL.
  4. Cuando se le solicite un valor http_path, haga lo siguiente:

    • Escriba el valor de HTTP Path (Ruta de acceso HTTP) de la pestaña Advanced Options, JDBC/ODBC (Opciones avanzadas, JDBC/ODBC) del clúster de Azure Databricks.
    • En el caso de un almacén de SQL, escriba el valor de Ruta de acceso HTTP que figura en la pestaña Detalles de conexión del almacén de SQL.
  5. Para elegir un tipo de autenticación, escriba el número que corresponde con use oauth (recomendado) o use access token.

  6. Si ha elegido use access token para el tipo de autenticación, escriba el valor del token de acceso personal de Azure Databricks.

    Nota:

    Como procedimiento recomendado de seguridad, cuando se autentique con herramientas, sistemas, scripts y aplicaciones automatizados, Databricks recomienda usar los tokens de acceso personal pertenecientes a las entidades de servicio en lugar de a los usuarios del área de trabajo. Para crear tókenes para entidades de servicio, consulte Administración de tokens de acceso para una entidad de servicio.

  7. Cuando se le solicite el valor desired Unity Catalog option, escriba el número que se corresponde con use Unity Catalog o not use Unity Catalog.

  8. Si decide usar el catálogo de Unity, escriba el valor deseado para catalog cuando se le solicite.

  9. Escriba los valores deseados para schema y threads cuando se le solicite.

  10. dbt escribe las entradas en un archivo profiles.yml. La ubicación de este archivo se muestra en la salida del comando dbt init. También puede enumerar esta ubicación más adelante ejecutando el comando dbt debug --config-dir. Ahora puede abrir este archivo para examinar y comprobar su contenido.

    Si eligió use oauth para el tipo de autenticación, agregue el perfil de autenticación de máquina a máquina (M2M) o de usuario a máquina (U2M) a profiles.yml.

    Consulte Configurar el inicio de sesión de Azure Databricks desde dbt Core con Microsoft Entra ID para obtener ejemplos.

    Databricks no recomienda especificar secretos enprofiles.yml directamente. En su lugar, establezca el id. y el secreto de cliente como variables de entorno.

  11. Confirme que los detalles de conexión son correctos al recorrer el directorio my_dbt_demo y ejecutar el comandodbt debug.

    Si ha elegido use oauth para el tipo de autenticación, se le pedirá que inicie sesión con el proveedor de identidades.

    Importante

    Antes de comenzar, compruebe que el clúster o el almacén de SQL se está ejecutando.

    Debería ver un resultado similar al siguiente:

    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
    

Pasos siguientes

Recursos adicionales