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.
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
En este directorio vacío, cree un archivo denominado
Pipfile
con el siguiente contenido. Este archivo pip indica apipenv
que use la versión 3.8.6 de Python. Si prefiere usar otra versión, reemplace3.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 apipenv
que use la versión más reciente del paquetedbt-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).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, reemplace3.8.6
por el número de versión adecuado.pipenv --python 3.8.6
Instale el adaptador de Databricks para dbt ejecutando
pipenv
con la opcióninstall
. Como resultado, se instalan los paquetes dePipfile
, 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
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 ejecutapython --version
opip 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.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
.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.
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
Cuando se le pregunte si desea usar una base de datos
databricks
ospark
, escriba el número que corresponda adatabricks
.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.
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.
Para elegir un tipo de autenticación, escriba el número que corresponde con
use oauth
(recomendado) ouse access token
.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.
Cuando se le solicite el valor
desired Unity Catalog option
, escriba el número que se corresponde conuse Unity Catalog
onot use Unity Catalog
.Si decide usar el catálogo de Unity, escriba el valor deseado para
catalog
cuando se le solicite.Escriba los valores deseados para
schema
ythreads
cuando se le solicite.dbt escribe las entradas en un archivo
profiles.yml
. La ubicación de este archivo se muestra en la salida del comandodbt init
. También puede enumerar esta ubicación más adelante ejecutando el comandodbt 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) aprofiles.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 en
profiles.yml
directamente. En su lugar, establezca el id. y el secreto de cliente como variables de entorno.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
- Cree, ejecute y pruebe los modelos de dbt Core localmente. Consulte el tutorial de dbt Core.
- Ejecute proyectos de dbt Core como tareas de trabajo de Azure Databricks. Consulte Uso de transformaciones de dbt en un trabajo de Azure Databricks.
Recursos adicionales
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de