5 puntos por GN⁺ 2025-03-13 | Aún no hay comentarios. | Compartir por WhatsApp
  • 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.

Aún no hay comentarios.