Librería de utilidades comunes para pipelines ELT orientados a Databricks (DLT).
Project description
DBX ELT Utilities
dbx-elt-utils es una librería de utilidades diseñada para simplificar y unificar la creación de pipelines Delta Live Tables (DLT) en Databricks. Proporciona métodos estandarizados para ingesta híbrida, setup automático del entorno (Local vs Nube) y limpieza de datos estructurados.
🚀 Instalación
Para uso en producción (Pipelines de Databricks):
pip install dbx-elt-utils
(Nota: La librería no fuerza la instalación interna de pyspark, previniendo conflictos con el Databricks Runtime).
Para desarrollo local (VS Code / Python Kernel): Incluye el SDK oficial para que tu PC pueda conectarse y simular ejecuciones.
pip install dbx-elt-utils[local]
🛠️ Cómo Inicializar un Notebook
Olvídate de configurar el espantoso sys.path. Solo necesitas estas 5 líneas al inicio de cualquier notebook (Bronze, Silver o Gold):
from dbx_elt_utils.notebook_utils import init_notebook
# Detecta automáticamente si estás en la Nube de Databricks o probando en local.
# Si estás en local, activa un "Mock" de DLT para que no tire error de importación.
notebook = init_notebook()
# Variables listas para usar:
env = notebook.env # Ej: '_dev' o '_prod'
spark = notebook.spark # Tu sesión de PySpark
dlt = notebook.dlt # El módulo delta live tables (o el mock si estás local)
📦 Módulos Principales y Funcionalidad
Esta librería está dividida en 3 módulos lógicos:
1. ingest_utils.py (Ingesta Inteligente)
Diseñado para la capa Bronze. Su función principal es abstraer la complejidad técnica de AutoLoader y lectura de Unity Catalog.
ingesta_hibrida(spark, origen, tipo="auto_detect", formato_archivo="json", env_suffix="_dev")- Qué hace: Detecta si tu origen es una ruta RAW (como
abfss://...) o una tabla externa de Databricks para crear un Streaming DataFrame perfecto para DLT. - Súper poder: Si es una ruta (AutoLoader), activa mágicamente la opción
schemaEvolutionMode="addNewColumns". Esto evita que el pipeline se rompa si mañana llega un CSV con más columnas de las esperadas. - Uso típico:
df = ingesta_hibrida(spark, "abfss://contenedor@storage.dfs.core.windows.net/data.csv", formato_archivo="csv")
- Qué hace: Detecta si tu origen es una ruta RAW (como
2. clean_utils.py (Limpieza y Estandarización)
Diseñado para la capa Silver.
extraer_valor_array_string(columna)- Qué hace: Las APIs externas muchas veces entregan valores atrapados en arreglos de texto (ej.
["12345"]). Esta función recibe la columna de Spark, elimina corchetes y comillas limpiamente usando expresiones regulares, convirtiéndolo a texto puro (12345). - Súper poder: Si el string viene vacío (
"[]"), lo convierte formalmente a un valorNULLreal de base de datos. - Uso típico:
df.withColumn("id_limpio", extraer_valor_array_string(col("id_crudo")))
- Qué hace: Las APIs externas muchas veces entregan valores atrapados en arreglos de texto (ej.
3. notebook_utils.py (Pruebas Locales Seguras)
Ideal para tus ciclos de prueba en VS Code (Mock Local). Además del init_notebook(), incluye herramientas de protección:
-
get_local_source_table(spark, source_official)- Qué hace: Cuando pruebas la capa Silver/Gold localmente, no quieres arriesgarte a sobrescribir tablas oficiales en Unity Catalog (
table). Esta función averigua si corriste un "Test Bronze Local" antes. Si sí, fuerza a tu notebook Silver a leer los datos de prueba (temporary.table_tmp_sql). Si no, lee la oficial.
- Qué hace: Cuando pruebas la capa Silver/Gold localmente, no quieres arriesgarte a sobrescribir tablas oficiales en Unity Catalog (
-
clean_local_test_table(spark, source_table)- Qué hace: Aplica el patrón Read & Destroy. Destruye las tablas temporales (
_tmp_sql) después de que hacesdf.show(), manteniendo el catálogo limpio.
- Qué hace: Aplica el patrón Read & Destroy. Destruye las tablas temporales (
-
get_test_spark()- Qué hace: Crea e invoca la sesión de Databricks Connect.
-
stop_local_spark()- Qué hace: El salvavidas principal. Al terminar una prueba local, mata el proceso persistente de Java/Databricks-Connect. Sin esta función, tu kernel de local de Python se quedaría colgado hasta que reinicies VS Code.
- Uso típico: Poner siempre en la cláusula
finally:de tus bloques de test.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dbx_elt_utils-0.1.1.tar.gz.
File metadata
- Download URL: dbx_elt_utils-0.1.1.tar.gz
- Upload date:
- Size: 21.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9532b256572334fc198825e3bd9b5906db7f9cd574efcf123350e9c105c06a60
|
|
| MD5 |
88c93c5086ab233942e8aaeec18a50dc
|
|
| BLAKE2b-256 |
0017f2ed0a306dd4574c814e9fc649b4debbd6f5f96e962ae7f8655fcd8cb39c
|
File details
Details for the file dbx_elt_utils-0.1.1-py3-none-any.whl.
File metadata
- Download URL: dbx_elt_utils-0.1.1-py3-none-any.whl
- Upload date:
- Size: 8.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
732c8c01dbce68291bd983d321841c2d8855e7ca2b0debef5e75b59823168947
|
|
| MD5 |
184669bb0836ba5c32bb59cffcbe3b2f
|
|
| BLAKE2b-256 |
8406ee959fb03f35c038c7973e9952ba0d2df65ea4cc1a221a0b5356e2e73180
|