
En arquitecturas modernas de datos, no toda la información reside directamente dentro del data warehouse. Muchas organizaciones almacenan datos en sistemas externos como data lakes o buckets cloud y necesitan integrarlos dentro de sus pipelines analíticos.
Para facilitar este proceso, herramientas como dbt permiten trabajar con external tables, haciendo posible consultar datos externos desde plataformas como Snowflake sin necesidad de cargarlos completamente en tablas internas.
En este artículo exploraremos qué son las external tables, cómo funcionan en dbt y cómo pueden utilizarse en proyectos de datos modernos.
Qué son las External Tables
Las external tables son tablas que permiten consultar datos almacenados fuera del data warehouse.
En lugar de almacenar físicamente los datos dentro de Snowflake, las external tables actúan como una capa de acceso sobre archivos externos.
Estos archivos suelen estar almacenados en:
- Amazon S3
- Azure Blob Storage
- Google Cloud Storage
Por qué utilizar external tables
Las external tables ofrecen múltiples ventajas.
Acceso directo a datos externos
Permiten consultar archivos sin necesidad de moverlos.
Reducción de almacenamiento duplicado
Evitan copiar datos innecesariamente.
Integración con data lakes
Facilitan arquitecturas híbridas.
Flexibilidad
Permiten trabajar con múltiples formatos de datos.
Qué es dbt
dbt (Data Build Tool) es una herramienta utilizada para transformar datos dentro del data warehouse utilizando SQL.
Permite:
- crear modelos de datos
- automatizar transformaciones
- gestionar dependencias
- documentar pipelines
dbt se ha convertido en una herramienta clave en workflows ELT modernos.
Integración de external tables en dbt
Para trabajar con external tables en dbt, normalmente se utiliza el paquete:
dbt_external_tables
Este paquete facilita la creación y mantenimiento de external tables desde dbt.
Instalación del paquete
En el archivo packages.yml:
packages:
– package: dbt-labs/dbt_external_tables
version: 0.8.0
Luego se instala con:
dbt deps
Configuración de una external table
Ejemplo de configuración:
sources:
– name: raw_data
tables:
– name: events_external
external:
location: «@my_stage/events/»
file_format: «(type = parquet)»
Esto define una external table sobre archivos Parquet.
Crear la external table
dbt permite generar automáticamente la tabla:
dbt run-operation stage_external_sources
Esto crea las external tables definidas en los sources.
Consultar datos externos
Una vez creada, la external table puede utilizarse como cualquier otra tabla.
SELECT *
FROM {{ source(‘raw_data’, ‘events_external’) }}
LIMIT 10;
Formatos soportados
Las external tables soportan distintos formatos de archivo.
Por ejemplo:
- CSV
- JSON
- Parquet
- Avro
Esto facilita la integración con múltiples fuentes de datos.
Casos de uso comunes
Las external tables son especialmente útiles en:
- arquitecturas lakehouse
- ingestión de datos raw
- procesamiento de logs
- integración de datos históricos
- pipelines ELT modernos
Ventajas frente a cargas tradicionales
Comparadas con cargas tradicionales, las external tables ofrecen:
- acceso inmediato a datos
- menor duplicación
- mayor flexibilidad
- integración sencilla con cloud storage
Sin embargo, también pueden tener limitaciones de rendimiento dependiendo del volumen y formato de los datos.
External tables y Snowflake
En Snowflake, las external tables permiten combinar:
- almacenamiento cloud externo
- procesamiento analítico
- optimización de consultas
Esto facilita arquitecturas modernas basadas en separación entre almacenamiento y procesamiento.
Buenas prácticas
Al trabajar con external tables es recomendable:
- organizar correctamente los archivos
- utilizar formatos optimizados como Parquet
- particionar datos cuando sea posible
- documentar estructuras de datos
- monitorizar costes y rendimiento
dbt y arquitecturas modernas de datos
dbt se ha convertido en una herramienta fundamental dentro de arquitecturas modernas.
La combinación de:
- dbt
- Snowflake
- external tables
permite construir pipelines ELT flexibles y escalables.




