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.




