Skip to main content

En proyectos de ingeniería de datos es muy común trabajar con archivos provenientes de distintas fuentes externas. Estos archivos pueden tener formatos como CSV, JSON, Parquet o Avro, y muchas veces no conocemos exactamente su estructura antes de cargarlos en un sistema analítico.

Para facilitar este proceso, Snowflake ofrece la función INFER_SCHEMA, que permite analizar archivos almacenados en un stage y detectar automáticamente su estructura.

Esta funcionalidad es especialmente útil durante procesos de ingestión de datos, ya que permite identificar columnas y tipos de datos sin tener que definir manualmente la estructura.

Qué es INFER_SCHEMA

INFER_SCHEMA es una función de Snowflake que analiza archivos almacenados en un stage y devuelve información sobre su estructura.

La función examina el contenido de los archivos y devuelve detalles como:

  • nombres de columnas
  • tipos de datos
  • posición de columnas
  • estructura del dataset

Esto permite generar automáticamente el esquema de una tabla antes de cargar los datos.

Cuándo utilizar INFER_SCHEMA

Esta función resulta especialmente útil en varios escenarios.

Por ejemplo:

  • ingestión de datasets externos
  • exploración de archivos antes de cargarlos
  • automatización de pipelines de ingestión
  • análisis de datasets desconocidos

En pipelines de datos modernos, INFER_SCHEMA puede ayudar a reducir el trabajo manual al preparar datasets.

Cómo funciona INFER_SCHEMA

Para utilizar esta función, primero es necesario que los archivos estén almacenados en un stage de Snowflake.

Un stage es una ubicación donde se almacenan archivos que posteriormente pueden cargarse en tablas.

Los stages pueden ser:

  • internos (dentro de Snowflake)
  • externos (por ejemplo en S3, Azure Blob Storage o Google Cloud Storage)

Una vez que los archivos están en el stage, podemos utilizar INFER_SCHEMA para analizar su estructura.

Ejemplo básico de INFER_SCHEMA

Supongamos que tenemos archivos almacenados en un stage.

Podemos ejecutar la siguiente consulta:

SELECT *

FROM TABLE(

    INFER_SCHEMA(

        LOCATION => ‘@my_stage/data/’,

        FILE_FORMAT => ‘my_file_format’

    )

);

Esta consulta analiza los archivos dentro del stage y devuelve información sobre las columnas detectadas.

El resultado suele incluir campos como:

  • nombre de columna
  • tipo de dato inferido
  • posición dentro del archivo

Uso con formatos semi-estructurados

INFER_SCHEMA es particularmente útil cuando trabajamos con formatos semi-estructurados como:

  • JSON
  • Parquet
  • Avro

En estos formatos, la estructura puede ser compleja o variar entre archivos.

La función permite analizar los archivos y detectar automáticamente la estructura de los datos.

Integración con CREATE TABLE

Una vez identificado el esquema de los archivos, se puede utilizar esa información para crear una tabla en Snowflake.

Esto permite construir pipelines de ingestión de datos más automatizados.

Por ejemplo, después de analizar el esquema, se puede generar la definición de una tabla que coincida con la estructura detectada.

Esto simplifica el proceso de carga de datos.

INFER_SCHEMA en pipelines de datos

En arquitecturas modernas de datos, muchas organizaciones utilizan pipelines automatizados para ingestión de datasets provenientes de diferentes sistemas.

INFER_SCHEMA puede formar parte de estos pipelines para:

  • detectar automáticamente estructuras de archivos
  • generar esquemas dinámicos
  • reducir errores en la carga de datos

Esto resulta especialmente útil cuando se trabaja con datasets externos que cambian con frecuencia.

Ventajas de utilizar INFER_SCHEMA

El uso de esta función ofrece varios beneficios.

Automatización

Permite detectar estructuras de archivos sin definir manualmente el esquema.

Exploración rápida

Facilita comprender la estructura de datasets externos.

Reducción de errores

Evita problemas causados por definiciones incorrectas de columnas.

Integración en pipelines

Puede incorporarse fácilmente en procesos de ingestión automatizados.

Buenas prácticas

Al trabajar con INFER_SCHEMA es recomendable:

  • validar el esquema detectado antes de crear tablas
  • revisar tipos de datos inferidos
  • probar con diferentes archivos del dataset
  • utilizar formatos de archivo bien definidos

Esto ayuda a garantizar que la estructura detectada sea correcta.

INFER_SCHEMA en arquitecturas modernas de datos

Las arquitecturas modernas de datos suelen trabajar con múltiples fuentes externas y formatos de archivo.

Funciones como INFER_SCHEMA ayudan a simplificar la ingestión de datos y facilitan la integración de datasets dentro del data warehouse.

Esto permite que los equipos de datos construyan pipelines más automatizados y eficientes.

Conclusión

La función INFER_SCHEMA de Snowflake permite analizar archivos almacenados en stages y detectar automáticamente su estructura. Esta funcionalidad facilita la ingestión de datos provenientes de fuentes externas y ayuda a construir pipelines de datos más automatizados.

Para ingenieros de datos que trabajan con múltiples formatos y datasets dinámicos, INFER_SCHEMA puede ser una herramienta muy útil para explorar y preparar datos antes de cargarlos en el data warehouse.