¿Qué es un Flat File?
(evidence.dev)- Un flat file es un formato muy común en el análisis de datos
- Esta guía completa explica qué es un flat file, qué tipos existen, cuál elegir, además de sus casos de uso, características de formato y comparaciones con bases de datos no flat file y DBMS relacionales
Difícil de definir
- Un Flat File se usa principalmente al extraer y procesar datos desde una base de datos
- Suele tomar la forma de un archivo de texto simple como CSV, donde cada fila representa un registro y los campos están separados por comas
- Sin embargo, la definición de "Flat File" no es clara, aunque tiene las siguientes características en común:
- Solo texto: almacena únicamente texto y números, no datos binarios (Blob)
- Formato tabular: una tabla por archivo, con registros basados en filas
- Portable: se puede imprimir, modificar y procesar fácilmente sin software especial
- No estructurado: por lo general no hay jerarquía ni relaciones entre registros
- Sin compresión: por defecto no incluye compresión inteligente (aunque DuckDB, Spark, etc. permiten archivos zip)
- Sin índices: no tiene índices integrados para buscar registros específicos
- Sin descripción: por lo general no incluye metadatos ni información de esquema
- JSON y YAML quedan fuera de esta definición porque pueden incluir jerarquía y esquema
- Tampoco ayuda mucho el hecho de que puedan usarse en casos de uso muy variados
- CSV: formato para almacenamiento e intercambio de datos
- JSON: intercambio de datos a gran escala, gestión de configuración y formato de respuesta de API
- YAML: gestión de configuración y archivos de definición de pipelines
Tipos de Flat File
- Existen varios tipos según cómo se organizan y almacenan los datos
- Forma de organizar campos y registros
- Flat file no estructurado: estructura de una sola tabla como CSV
- Flat file estructurado: JSON, YAML, XML, etc. tienen estructura jerárquica
- Tipo de delimitador de campos
- Cada fila representa un registro y los campos se separan con un delimitador
- Se usan coma (
,), tabulación (\t) o pipe (|)
- Formato de ancho fijo vs ancho variable
- El formato de ancho fijo tiene campos de longitud constante → procesamiento más rápido
- El formato de ancho variable ofrece más flexibilidad de procesamiento
- Delimitadores de datos
- CSV puede almacenar tabulaciones y saltos de línea (con escape)
- TSV no permite tabulaciones ni saltos de línea
- Facilidad de lectura para humanos
- Los flat files suelen poder leerse por personas
- En algunas plataformas, los archivos de Excel también se clasifican como flat files
- Si incluyen metadatos o no
- Archivos como CSV no tienen metadatos
- JSON puede incluir sus propios metadatos y esquema
Casos de uso de Flat File
- Almacenamiento e intercambio
- Intercambio de datos: CSV y JSON son útiles para intercambiar datos entre distintas plataformas
- Integración de datos en ETL: los flat files se usan con frecuencia como datos de origen y destino en ETL
- Archivado y respaldo: los flat files, al estar basados en texto, son convenientes para almacenamiento de largo plazo
- Uso utilitario
- Gestión de configuración: YAML, JSON, INI, etc. se usan para variables de entorno, conexiones a bases de datos y más
- Definición de pipelines de datos: JSON, YAML, etc. se usan para definir la estructura de pipelines
- Metadatos de datasets: JSON puede definir la transformación y validación de CSV
Ejemplos de Flat File
CSV (Comma-Separated Values)
- Extensión:
.csv - Delimitador: coma
, - Estructura: plana (flat)
- Fácil de leer para humanos
- Ejemplo:
name, country, age Alice, USA, 22 Bob, Canada, 34 Charlie, UK, 28 - Cuándo elegirlo:
- Adecuado para datos estructurados en formato tabular
- Útil al exportar desde sistemas de BI, Excel o Google Sheets
- Cuándo evitarlo:
- No es adecuado si se necesita una estructura jerárquica compleja
- Puede causar problemas al manejar datos que incluyen comas
TSV (Tab-Separated Values)
- Extensión:
.tsv - Delimitador: tabulación
\t - Estructura: plana (flat)
- Fácil de leer para humanos
- Ejemplo:
name country age Alice USA 22 Bob Canada 34 Charlie UK 28 - Cuándo elegirlo:
- Útil cuando hay que manejar datos que contienen comas
- Se puede procesar fácilmente con herramientas CLI de Unix
- Cuándo evitarlo:
- Da problemas si los datos contienen tabulaciones
JSON (JavaScript Object Notation)
- Extensión:
.json - Estructura: jerárquica
- Fácil de leer para humanos
- Ejemplo:
[ {"name": "Alice", "country": "USA", "age": 22}, {"name": "Bob", "country": "Canada", "age": 34}, {"name": "Charlie", "country": "UK", "age": 28} ] - Cuándo elegirlo:
- Adecuado cuando se necesita una estructura de datos jerárquica
- Cuándo evitarlo:
- No es ideal cuando la prioridad es la velocidad
YAML (YAML Ain’t Markup Language)
- Extensión: .yaml
- Estructura: jerárquica
- Fácil de leer para humanos
- Ejemplo:
name: Alice country: USA age: 22 - Cuándo elegirlo:
- Adecuado cuando se necesitan archivos de configuración fáciles de leer para humanos
- Cuándo evitarlo:
- No es adecuado para almacenar grandes volúmenes de datos
Archivos ENV
- Extensión: .env
- Estructura: plana (flat)
- Fácil de leer para humanos
- Ejemplo:
APP_NAME=MyApp ENVIRONMENT=production - Cuándo elegirlo:
- Adecuado cuando se necesitan archivos de configuración en despliegues y entornos locales
- Cuándo evitarlo:
- No es adecuado para almacenar estructuras de datos complejas
Comparación entre Flat File vs Non-Flat File vs DBMS
Los flat files suelen compararse con bases de datos relacionales (RDBMS), y también existen formatos intermedios como Avro, Parquet y ORC. A continuación se comparan las características principales:
-
Forma de organizar registros
- CSV: almacenamiento de datos basado en filas (Row)
- JSON: almacenamiento basado en pares clave-valor
- Parquet: almacenamiento basado en columnas (Column)
- DBMS relacional: almacenamiento basado en filas (Row)
-
Si es un formato legible por humanos
- CSV y JSON: basados en texto → fáciles de leer
- Parquet y DBMS: basados en binario → difíciles de leer
-
Portabilidad
- CSV, JSON y Parquet: alta compatibilidad entre plataformas
- DBMS: solo se puede usar con software específico
-
Soporte de estructura jerárquica
- CSV: sin estructura jerárquica
- JSON: soporta estructura jerárquica
- Parquet: soporta estructuras anidadas
- DBMS: soporta múltiples tablas y estructura relacional
-
Escalabilidad
- CSV y JSON: baja escalabilidad
- Parquet y DBMS: alta escalabilidad
-
Soporte de índices
- CSV y JSON: sin índices
- Parquet: permite búsquedas rápidas mediante metadatos a nivel de archivo y columna
- DBMS: sí soporta índices
-
Soporte de esquema
- CSV: sin esquema
- JSON: puede incluir esquema
- Parquet y DBMS: aplican el esquema de forma obligatoria
- Parquet no usa índices B-Tree ni hash. En cambio, acelera la búsqueda de datos mediante metadatos a nivel de archivo, grupo de filas y columna
Elegir el formato Flat File correcto
- CSV, TSV → intercambio y almacenamiento simple de datos, como cuando se archivan o se mueven entre plataformas
- JSON → usar cuando se necesita un formato autodescriptivo con estructura jerárquica
- YAML → adecuado para configuración y ajustes de pipelines
- Parquet → considerar cuando se necesita tamaño de archivo pequeño, consultas rápidas y soporte para tipos de datos complejos
Aún no hay comentarios.