Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DATO
SE PERSISTE
Zona 1 SE SIRVE
EUROPA
CONSUMIDOR 1 Según nuestro presupuesto,
ÁFRICA
SE DUPLICA
podría asegurarse una
disponibilidad de hasta 99.9%
¿SE SATURA?
LO SIRVE OTRO y una durabilidad de hasta
Zona 2 SE TRIPLICA
¿DESASTRE?
SE RECUPERA
99.99999999999999%
ASIA CONSUMIDOR 2
EEUU
SE SIRVE
Zona 3
EEUU
EXTRA: https://datacenters.microsoft.com/globe/
Almacenamiento: Tabla resumen de réplicas zonales
Parámetro LRS ZRS GRS/RA-GRS GZRS/RA-GZRS
Disponibilidad de
las solicitudes de > 99.9%
lectura y escritura
Número de copias Tres copias dentro de una Tres copias en zonas de Seis copias en total, tres en Seis copias en total, tres en
de datos única región disponibilidad la región primaria y tres en zonas de disponibilidad
mantenidas en independientes dentro de la región secundaria independientes en la región
nodos una única región primaria y tres copias con
independientes redundancia local en la
región secundaria
Ofrecen también soluciones ‘sin infraestructura’ que permiten ejecutar códigos sin
determinar dónde tendrá lugar dicha ejecución, y soluciones SaaS (Software como
Servicio) que paralelizan determinados procesos de manera ‘transparente’ al
usuario.
SE EJECUTA SE EJECUTA PROCESAMIENTO
UN SCRIPT UN SCRIPT PARALELO
PROCESAMIENTO
SERIAL
NODO RECUPERAMOS
Procesamiento: Hay muchas alternativas para llevar a cabo ejecuciones en paralelo
y, en general, en Cloud. Algunas son:
Cloud Functions (lambdas) Kubernetes + Docker (container) Máquinas Virtuales (EC2, VM)
Un disparador (tiempo o evento) ejecuta Cientos de máquinas se levantan, hacen Máquina, con o sin entorno visual, por la
un script corto (<15 mins) su trabajo, y se apagan. que pagas por minuto.
TIEMPO O EVENTO DISPARA CLOUD FUNCTION
CREAS UN PROCEDIMIENTO
DETECTAMOS
EJECUTA NUESTRO CAPTURO DATOS (BBDD, API…)
SCRIPT:
UN CAMBIO:
.TRANSFORMA DATOS
. BBDD
. FICHERO
.ENVÍA ALERTAS
MODELO 1 MODELO 2 MODELO 3
LANZAS EN LOCAL
.MUEVE TABLAS PERO TARDA DEMASIADO
. API
…
… (POCA RAM, CPU, GPU…)
GUARDA MODELO, PARÁMETROS Y RESULTADOS
Ej: Llega un EXCEL a nuestro bucket. C.F. se Ej: Lanzas 3 entrenamientos de ML, o Ej: Necesitas puntualmente una máquina con
enciende, lo procesa y se apaga. hiperparametrizaciones del mismo. 240 Gb de RAM para tu proceso.
Extra: https://crontab.guru/
Extra: https://cloud.google.com/functions/pricing?hl=es
Técnicas y Herramientas: Se han desarrollado tanto lenguajes y frameworks como
herramientas que hacen cómodo el tratamiento de datos en paralelo para los
desarrolladores.
SQL CosmosDB
… … … COLAB*
ETL/ELT: Con los lenguajes, frameworks, arquitecturas… vistos hasta ahora, estamos
preparados para resolver procesos de Extracción, Transformación y Carga de datos.
Esta es una operación que responde a la necesidad de ‘limpiar y colocar’ los datos para
que estos sean consumidos por procesos de Machine Learning, Visualización…
ORÍGENES CONSUMO
CAPA CAPA CAPA
BRONZE SILVER GOLD
- PROCESOS - VISUALIZACIÓN
- IoT FILTRADO
- ML / IA
NIVEL NEGOCIO
- OpenData RAW AUMENTADO
AGREGADO
- API
LIMPIO
- API …
…
¿Cuál escogemos?
SQL: Tipos de operaciones
Creación, consulta y borrado Seguridad y Operaciones
DDL TCL
Definición de Datos Control Transaccional
CREATE, ALTER, DROP… COMMIT, ROLLBACK…
SQL
SQLite
DML DCL
Manipulación de Datos Control de Accesos
SELECT, INSERT, GRANT, REVOKE…
UPDATE, DELETE…
Ejemplo: SQL en tienda de electrodomésticos
ORÍGENES raw_ventas
raw_ventas id_venta
Procede de los TPV o ventas online (Near Real Time - IoT). id_producto
Se ingesta programáticamente. id_cliente
Incluye datos de las operaciones, y es la tabla que relaciona el id_empleado
resto. datetime
raw_productos canal raw_empleados
raw_productos cantidad
Procede del Departamento Comercial (Batch). precio
Se ingesta mediante un software de gestión de stock o CSV. id_producto metodo_pago id_empleado
Incluye datos del catálogo de productos de la empresa, nombre_producto nombre
incluyendo aspectos variables como el stock. descripcion_producto apellido
precio categoria
raw_clientes categoria horario
Procede de un programa CRM o un registro de usuarios. eficiencia_energetica raw_clientes fecha_alta
Por su volumen, se ingesta programáticamente. stock fecha_baja
id_cliente
raw_empleados
nombre
Procede del Departamento de RRHH.
apellido
Se ingesta mediante software de gestión de RRHH o CSV.
email
Incluye datos de los trabajadores.
telefono
direccion
ETL, ¿por qué? antiguedad
Subida a sqliteonline.com
Del Origen a RAW. Validaciones de la ingesta
ORÍGENES CONSUMO
CAPA CAPA CAPA
BRONZE SILVER GOLD
- PROCESOS - VISUALIZACIÓN
- IoT FILTRADO
- ML / IA
NIVEL NEGOCIO
- OpenData RAW AUMENTADO
AGREGADO
- API
LIMPIO
- API …
…
SELECT *
FROM raw_ventas
LIMIT 10;
SELECT id_empleado,
GROUP_CONCAT(id_producto, ',') AS lista_productos
FROM raw_ventas
GROUP BY id_empleado;
DML - Diferencia entre WHERE y HAVING
WHERE HAVING
Se utiliza para filtrar filas individuales antes Se utiliza para filtrar grupos de filas
de que se realice cualquier operación de después de que se hayan realizado
agregación. operaciones de agregación, como SUM,
AVG, COUNT, etc.
Ejemplo: Ejemplo:
ORÍGENES CONSUMO
CAPA CAPA CAPA
BRONZE SILVER GOLD
- PROCESOS - VISUALIZACIÓN
- IoT FILTRADO
- ML / IA
NIVEL NEGOCIO
- OpenData RAW AUMENTADO
AGREGADO
- API
LIMPIO
- API …
…
Imputación de Eliminación de
faltantes duplicados Detección de
outliers
Casteo de
variables
Estandarización Enriquecimiento
de textos del dato
…
Comprobación y Eliminación de duplicados
Comprobación
Eliminación
DELETE FROM raw_clientes SELECT * FROM raw_clientes
WHERE ROWID NOT IN ( WHERE ROWID IN (
A NUEVA TABLA
SELECT MIN(ROWID) SELECT MIN(ROWID)
slv_clientes
FROM raw_clientes FROM raw_clientes
GROUP BY id_cliente); GROUP BY id_cliente, nombre, apellido);
Imputación de faltantes
Comprobación
SELECT
SUM(CASE WHEN nombre IS NULL THEN 1 ELSE 0 END) AS null_nombres,
SUM(CASE WHEN apellido IS NULL THEN 1 ELSE 0 END) AS null_apellidos,
SUM(CASE WHEN direccion IS NULL THEN 1 ELSE 0 END) AS null_direcciones,
SUM(CASE WHEN antiguedad is NULL THEN 1 ELSE 0 END) AS null_antiguedad
FROM raw_clientes;
INSERT INTO slv_ventas (id_venta, id_producto, id_cliente, id_empleado, datetime, cantidad, descuento, metodo_pago, year, month, day)
SELECT
id_venta,
id_producto,
id_cliente,
id_empleado,
datetime,
cantidad,
descuento,
metodo_pago,
strftime('%Y', datetime) AS year,
strftime('%m', datetime) AS month,
strftime('%d', datetime) AS day
FROM raw_ventas;
Extraemos características (día, mes y año)
ORÍGENES CONSUMO
CAPA CAPA CAPA
BRONZE SILVER GOLD
- PROCESOS - VISUALIZACIÓN
- IoT FILTRADO
- ML / IA
NIVEL NEGOCIO
- OpenData RAW AUMENTADO
AGREGADO
- API
LIMPIO
- API …
…
UNION ALL
(Combina los resultados de dos o más consultas
SELECT, pero no elimina los registros duplicados)
SELECT columna1, columna2 FROM tabla1 UNION / UNION ALL / EXCEPT
UNION ALL
SELECT columna1, columna2 FROM tabla2;
EXCEPT
(Devuelve los registros de la primera consulta que no
están presentes en la segunda consulta)
SELECT columna1, columna2 FROM tabla1
EXCEPT
SELECT columna1, columna2 FROM tabla2;
Los tipos de JOIN. Mergeando tablas.
INNER JOIN (JOIN) tabla 1 tabla 2
Combina filas de ambas tablas donde la condición del JOIN se cumple.
Sólo devuelve las filas donde hay una coincidencia en ambas tablas.
SELECT tabla1.columna1, tabla2.columna2
FROM tabla1
INNER JOIN tabla2 ON tabla1.columna1 = tabla2.columna1;
EXCEPT
Produce el producto cartesiano de las dos tablas, lo que significa que combina
cada fila de la primera tabla con cada fila de la segunda tabla.
No necesita una condición de JOIN.
SELECT tabla1.columna1, tabla2.columna2
FROM tabla1
CROSS JOIN tabla2;
Creando nuestra capa GOLD.
¡Las consultas están en el fichero ‘DML multitabla.sql’!
Interesante:
Consultas con tablas CTE.
Una tabla CTE, que significa "Common Table Expression" (Tabla
Común en español), es una construcción temporal que se utiliza en
SQL para simplificar las consultas complejas.
Puntos clave:
ORÍGENES CONSUMO
CAPA CAPA CAPA
BRONZE SILVER GOLD
- PROCESOS - VISUALIZACIÓN
- IoT FILTRADO
- ML / IA
NIVEL NEGOCIO
- OpenData RAW AUMENTADO
AGREGADO
- API
LIMPIO
- API …
…