Tres lakehouses y ocho cuadernos

Serie Una plataforma de datos en Fabric Parte 2 de 2
12
Ver las 2 entradas de la serie
  1. Tres capas y un montón de controles
  2. Tres lakehouses y ocho cuadernos — estás aquí

Datos · Microsoft Fabric · Segunda parte

Por qué elegí el mismo tipo de almacén para las tres capas, y qué hace exactamente cada pieza del proceso desde que el dato entra por la puerta.

Segunda entrega sobre el montaje de la plataforma de Novara Hospitality Group, el caso de laboratorio con el que recorro el método completo. En la primera conté el porqué de las tres capas y de los controles. Esta va de las decisiones de construcción.

De la entrada anterior me llegaron dos preguntas, y las dos venían de gente que sabe del tema. La primera: ¿por qué los tres almacenes son del mismo tipo? Lo normal es que la última capa sea un almacén de datos clásico. La segunda, más doméstica: vale, muy bonito, pero ¿qué hace exactamente cada pieza?

Van las dos.

Dos formas de guardar lo mismo

En Fabric, cuando tienes que decidir dónde guardas los datos, hay básicamente dos opciones. Y como los nombres no ayudan nada —lakehouse y warehouse, casa del lago y almacén—, lo explico con algo de andar por casa.

Un almacén de datos clásico es una base de datos de toda la vida. Tiene su propio motor, guarda las cosas a su manera, y para hablar con él usas SQL. Es el mostrador de una tienda: tú pides, él te sirve, y lo que hay detrás del mostrador es cosa suya. Funciona estupendamente y lleva treinta años haciéndolo.

Un lakehouse es, literalmente, una carpeta de ficheros con un índice encima. Los datos están ahí, en archivos, en un formato abierto que cualquier herramienta puede leer. Es el almacén con estanterías abiertas: entras, ves las cajas, y puedes cogerlas tú mismo o pedirle a alguien que te las traiga.

La diferencia que importa no es de velocidad ni de capacidad —las dos opciones van sobradas para la mayoría de los proyectos—, sino de quién puede tocar los datos y con qué herramienta.

Por qué elegí estanterías abiertas en las tres

Tres razones, y ninguna es «porque es más moderno».

1. No cambiar de herramienta a mitad del camino

Las dos primeras capas se transforman con una herramienta concreta. Son procesos que leen mucho, limpian, cruzan y escriben: eso se hace con código, no con consultas.

Si la última capa fuera un almacén clásico, tendría que cambiar de herramienta justo en el último paso. Y eso significa tener dos tecnologías conviviendo, dos formas de escribir lo mismo, dos juegos de pruebas y dos sitios donde buscar cuando algo falla.

Es como construir media casa en metros y la otra media en pulgadas. Se puede. Pero cada vez que toques la junta vas a tener que convertir, y cada conversión es un sitio donde meter la pata.

La herramienta más potente no es la mejor elección. La mejor elección es la que no te obliga a cambiar de herramienta.

2. Cómo se escribe de verdad en la última capa

Esta razón es menos obvia y más decisiva.

Mucha gente imagina que una plataforma de datos va añadiendo filas una a una, como quien apunta en una libreta. No es así. Lo que pasa en la práctica es que se reescriben bloques enteros: «vuelve a calcular todo el mes de marzo del hotel de Lisboa», o «el sistema de origen ha corregido una semana entera, rehazla».

Y ahí hay una diferencia real entre las dos opciones. El formato de ficheros del lakehouse está pensado para eso: reemplazar un bloque completo es tirar unos ficheros y poner otros. En un almacén clásico, la misma operación sobre tablas de decenas de millones de filas es bastante menos agradecida y mucho menos predecible en coste.

Dicho en plata: si tu forma de trabajar es «rehaz este cajón entero», te conviene un armario con cajones extraíbles, no uno donde haya que ir sacando los calcetines de uno en uno.

3. Que los informes lean los ficheros directamente

La tercera tiene que ver con lo que pasa al final, cuando alguien abre un informe.

Power BI puede leer directamente los ficheros del lakehouse, sin copiarlos antes a ningún sitio. Eso significa que cuando termina la carga de la noche, el informe ya tiene los datos nuevos: no hay que esperar a que se refresque nada, porque no hay una segunda copia que refrescar.

Sobre un almacén clásico también se puede hacer, pero con una capa de traducción en medio. Y esa capa, en este caso, no aportaba nada: nadie iba a sentarse a consultar la última capa con SQL a mano. El consumo es por informes. Si la capa de traducción no la usa nadie, es mantenimiento gratis.

LAKEHOUSE ALMACÉN CLÁSICO Se transforma con… Se escribe… Los informes leen… la misma herramienta que las capas anteriores reemplazando bloques enteros, no fila a fila sin copia intermedia que haya que refrescar SíNativoDirecto Hay que cambiarde herramienta Posible, menospredecible en coste Con una capa detraducción en medio Tres criterios, y los tres inclinan hacia el mismo lado. Por eso las tres capas son iguales.
La decisión no fue ideológica. Si el consumo hubiera sido con SQL interactivo, o si la escritura fuera fila a fila, la respuesta habría sido otra. La elección depende de cómo se escribe y de quién lee, no de qué suena mejor.
La objeción razonable

«¿Y si mañana alguien quiere consultar esto con SQL?»

Pues lo hace. Un lakehouse trae de serie un punto de conexión que habla SQL para lectura, así que quien quiera lanzar una consulta puede hacerlo sin que nadie mueva nada. No se pierde esa puerta: simplemente no se paga por tenerla abierta todo el rato.

Y ahora, las piezas

La segunda pregunta era qué hace cada cosa. El proceso son ocho cuadernos —ocho programas que se ejecutan en orden— y lo más interesante es cómo se reparten el trabajo:

PREPARAR BRONZE SILVER GOLD El preparador La ingesta El aterrizaje La puerta El conformado La puerta La estrella La puerta carpetas y registros trae el dato lo convierte en tablas comprueba Bronze limpia y cuadra comprueba Silver monta el modelo comprueba Gold Tres cuadernos transforman el dato. Otros tres no lo tocan: solo comprueban.
El reparto es la noticia. En la mayoría de proyectos que he visto, la proporción es de diez a uno a favor de transformar. Aquí es uno a uno — y las tres piezas doradas son las que deciden si el proceso continúa o se para.

El preparador

El primero no toca ni un dato. Lo único que hace es dejar la casa lista: crear las carpetas donde va a aterrizar cada cosa y, sobre todo, las tablas donde el proceso se apunta a sí mismo lo que va haciendo.

Esas tablas de registro son las que nadie valora hasta el día que hacen falta. Son el cuaderno de bitácora: qué entidades existen, cuándo se cargó cada una por última vez, cuántas filas trajo, si fue bien o mal. Sin eso, cuando una cifra no cuadre, lo único que tienes es un «pues yo creo que cargó anoche».

La ingesta

Aquí es donde el dato entra por la puerta.

En este caso, como es un laboratorio, el dato lo fabrica un generador que simula catorce sistemas distintos: el programa que gestiona las reservas, el de facturación, el de recursos humanos, las valoraciones de los clientes… En un proyecto real este hueco lo ocupan las conexiones contra esos sistemas, pero el resto del proceso es idéntico: a partir de aquí, nada sabe ni le importa de dónde vino el fichero.

Y hay una decisión importante en este punto: el fichero se deja tal cual en una zona de aterrizaje antes de convertirlo en nada. Organizada por sistema, por entidad y por fecha.

¿Por qué no cargarlo directamente? Por una razón muy práctica: los sistemas de origen sobrescriben. Si mañana necesitas recargar lo de hoy y no guardaste el fichero, puede que ese dato ya no exista en ningún sitio del mundo. La zona de aterrizaje es la fotocopia que te guardas antes de entregar el original.

El aterrizaje

El tercero convierte esos ficheros en tablas de verdad. Y hace dos cosas que merecen mención.

La primera: a cada fila le añade de dónde vino y cuándo. Cuatro columnas que no le interesan a ningún usuario y que resuelven el noventa por ciento de las investigaciones.

La segunda es más sutil. Hay dos formas de traer datos, y el proceso distingue entre ellas:

FOTO COMPLETA INCREMENTAL catálogos, maestros: se sobrescribe todo movimientos: se reemplaza solo el día se reescribe la tabla entera cada vez que se carga hoy lo anterior no se toca: solo se cambia el cajón del día En los dos casos, repetir la carga deja exactamente el mismo resultado.
Repetir no duplica. Es la propiedad que convierte un incidente nocturno en diez minutos de trabajo: si algo salió mal, se vuelve a lanzar y ya está. Sin ella, cada reintento es una negociación sobre qué borrar primero.

El conformado

Este es el cuaderno más largo de todos, y es donde ocurre la mayor parte del trabajo de verdad.

Aquí se limpia, se tipa, se quitan duplicados y se resuelve el lío de que la misma persona aparezca tres veces con tres grafías distintas en tres sistemas. Se convierten las monedas. Se reparten los paquetes —cuando alguien paga una tarifa que incluye habitación y cena, hay que decidir qué parte es cada cosa—. Y se aplica una por una cada regla de negocio que se acordó en aquella reunión del principio.

Hay dos detalles que me gusta contar de esta parte.

El primero es el día de negocio. Parece trivial y no lo es: una reserva que entra a las once de la noche en Lisboa y una que entra a la misma hora en Ciudad de México no pertenecen al mismo día, y si usas un horario común para todos, los hoteles lejanos nunca van a cuadrar con su propio sistema. Se normaliza al huso de cada hotel, no a uno central.

El segundo es la cuarentena. Lo que no pasa una regla no se tira: se aparta y se cuenta. Es una diferencia pequeña con una consecuencia grande, porque lo que se tira desaparece y nadie lo echa de menos, mientras que lo que está apartado aparece como una cifra en un informe, con el nombre del sistema que lo mandó al lado. Y esa cifra, enseñada en una reunión, consigue en diez minutos lo que tres correos no habían conseguido en un mes.

La estrella

El penúltimo cuaderno coge todo eso y le da la forma final.

Se llama «modelo en estrella» porque si lo dibujas queda así: en el centro los hechos —cada noche vendida, cada factura, cada valoración— y alrededor las tablas que los describen: el hotel, la fecha, el cliente, el canal por el que reservó.

¿Por qué esta forma y no una más ordenada? Porque es la que entienden rápido tanto el motor que calcula como la persona que arrastra campos a un informe. Hay formas de modelar más elegantes sobre el papel, impecables técnicamente, y que no las sabe usar nadie sin un manual.

Dos decisiones de aquí, en cristiano:

  • Las claves propias. Cada hotel, cada cliente, recibe un identificador interno que no es el del sistema de origen. Da trabajo y alguien siempre pregunta para qué. Para el día —que llega siempre— en que el sistema de origen migre y cambie sus códigos: entonces cambias una tabla de equivalencias y no se entera nadie.
  • Las filas para lo desconocido. Cuando una venta no sabe a qué cliente corresponde, no se deja en blanco: se apunta a una fila que literalmente se llama «desconocido». Suena absurdo y evita el problema más feo de todos, que es que los importes huérfanos desaparezcan de los totales sin que nadie lo note.

Los tres que no hacen nada

Y quedan tres cuadernos que no transforman ni una fila. Uno al final de cada capa.

Lo único que hacen es mirar lo que acaba de quedar escrito y compararlo con lo que tenía que haber quedado. Si algo importante no cuadra, el proceso se detiene ahí y la capa siguiente no empieza.

De esto hablé largo en la entrada anterior, así que solo repito la idea: son tres de ocho. Tres piezas de un proceso de ocho cuya única función es desconfiar del resto.

Y hay un detalle de construcción que sí merece contarse aquí: estos tres cuadernos vuelven a leer los datos desde el almacén, no reaprovechan nada de lo que acaba de calcular el cuaderno anterior. Si comprobaras usando lo que ya tienes en memoria, heredarías sus errores: si la transformación se dejó la mitad de las filas por un filtro mal puesto, tu comprobación se deja exactamente la misma mitad y te dice que todo está perfecto.

Un control que corre dentro del proceso que valida no es un control: es el mismo proceso dándose la razón.

Lo que me llevo

Si tuviera que resumir las dos decisiones de este post en una frase cada una:

La del almacén: no elegí lo más potente, elegí lo que no me obligaba a cambiar de herramienta a mitad del camino. Y la elección habría sido distinta con otro patrón de escritura o con otro tipo de consumo. Cuando alguien te diga que una opción es siempre mejor que la otra, desconfía: lo que hay que preguntar es cómo se escribe y quién lee.

La de las piezas: el proceso no es una tubería, son ocho piezas pequeñas con un trabajo cada una, de las que tres existen solo para comprobar que las otras hicieron bien el suyo. Y eso no es desconfianza: es lo que permite que a las tres de la mañana algo se pare solo en vez de llegar al informe de la mañana siguiente convertido en una cifra que nadie sabe explicar.

Novara Hospitality Group no existe: es un caso de laboratorio que construí para recorrer el método completo sin depender de los tiempos ni de los permisos de un cliente real. Las decisiones, en cambio, son las mismas que tomaría en un proyecto de verdad — y si tú las tomas de otra manera, me interesa mucho saber por qué.

Comentarios

Deja un comentario