Skip to main content

En procesos de ingestión y exportación de datos en Snowflake, uno de los elementos clave es el File Format.

Cuando cargamos datos desde un stage o exportamos información hacia almacenamiento externo, Snowflake necesita saber:

  • Cómo están delimitados los campos
  • Qué tipo de archivo estamos utilizando
  • Cómo interpretar valores nulos
  • Cómo manejar encabezados
  • Cómo tratar fechas y caracteres especiales

Definir correctamente un File Format evita errores de carga, inconsistencias y problemas de calidad de datos.

¿Qué es un File Format en Snowflake?

Un File Format es un objeto reutilizable que define cómo Snowflake debe leer o escribir archivos externos.

En lugar de especificar opciones manualmente en cada COPY INTO, podemos crear un objeto persistente y reutilizarlo.

Esto mejora:

  • Consistencia
  • Mantenibilidad
  • Gobernanza
  • Reutilización

Tipos de File Formats soportados

Snowflake soporta varios tipos de archivo:

  • CSV
  • JSON
  • AVRO
  • PARQUET
  • ORC
  • XML

Cada uno tiene sus propias opciones de configuración.

Crear un File Format para CSV

Ejemplo básico:

CREATE FILE FORMAT my_csv_format

TYPE = ‘CSV’

FIELD_DELIMITER = ‘,’

SKIP_HEADER = 1

NULL_IF = (‘NULL’, ‘null’)

FIELD_OPTIONALLY_ENCLOSED_BY = ‘»‘;

En este ejemplo:

  • Se define delimitador por coma
  • Se ignora la primera fila (header)
  • Se establecen valores nulos
  • Se gestionan campos entrecomillados

Este objeto puede reutilizarse en múltiples cargas.

Crear un File Format para JSON

CREATE FILE FORMAT my_json_format

TYPE = ‘JSON’

STRIP_OUTER_ARRAY = TRUE;

Útil cuando:

  • El JSON contiene arrays externos
  • Se cargan datos semiestructurados
  • Se trabaja con columnas VARIANT

Uso del File Format en COPY INTO

Ejemplo de carga desde un stage:

COPY INTO orders

FROM @my_stage

FILE_FORMAT = (FORMAT_NAME = my_csv_format);

Separar la definición del formato del proceso de carga mejora la organización del código SQL.

Formatos columnar: Parquet y ORC

Snowflake soporta formatos columnar como Parquet y ORC.

Ejemplo:

CREATE FILE FORMAT my_parquet_format

TYPE = ‘PARQUET’;

Ventajas de formatos columnar:

  • Mayor compresión
  • Mejor rendimiento
  • Integración natural con arquitecturas analíticas
  • Menor consumo de cómputo

En arquitecturas modernas, Parquet suele ser la opción recomendada.

File Formats y exportación de datos

Los File Formats no solo sirven para cargar datos, también para exportarlos.

Ejemplo:

COPY INTO @my_stage/exported_orders

FROM orders

FILE_FORMAT = (FORMAT_NAME = my_csv_format);

Permite estandarizar el formato de salida.

Buenas prácticas

Al trabajar con File Formats:

  • Crear formatos reutilizables por tipo de dato
  • Nombrarlos claramente (csv_raw_format, parquet_curated_format, etc.)
  • No duplicar configuraciones en cada COPY
  • Versionar cambios si el formato evoluciona
  • Documentar configuraciones especiales

Esto facilita mantenimiento a largo plazo.

Errores comunes

Algunos errores frecuentes incluyen:

  • No definir correctamente delimitadores
  • Ignorar encabezados accidentalmente
  • No gestionar correctamente valores NULL
  • Cargar JSON sin revisar estructura
  • No validar codificación de caracteres

Muchos problemas de calidad de datos empiezan en el formato de archivo.

 

File Formats y arquitectura de datos moderna

En arquitecturas basadas en:

  • Data Lake
  • ELT
  • Ingestión batch
  • Integraciones externas

Los File Formats son la interfaz entre el almacenamiento externo y el data warehouse.

Una mala definición puede impactar:

  • Rendimiento
  • Costes
  • Calidad de datos
  • Estabilidad del pipeline

Conclusión

Los File Formats en Snowflake son un componente fundamental en cualquier proceso de carga o exportación. Definirlos correctamente permite estandarizar procesos, evitar errores y mejorar la mantenibilidad.

En proyectos profesionales, los File Formats no deberían definirse ad hoc en cada carga, sino gestionarse como objetos reutilizables dentro de la arquitectura de datos.