Resumen de la Semana 3: Operaciones de Datos y DataOps

Introducción

Esta semana se enfoca en las operaciones de datos, abarcando aspectos de ingeniería de software y gestión de datos. Se profundiza en los pilares fundamentales de las operaciones de datos, derivados del concepto de DataOps, que a su vez surge de DevOps.

¿Qué es DataOps?

Pilares de las Operaciones de Datos

Se analizan los tres pilares principales:

  1. Automatización
  2. Observabilidad y Monitoreo
  3. Respuesta a Incidentes (menos enfocado en esta semana)

La respuesta a incidentes está más relacionada con hábitos culturales y es más difícil de practicar en un entorno de curso en línea.


Enfoque en Automatización

Infraestructura como Código (IaC)


Materiales y Entrevistas


Resumen de la Semana

Aspecto Detalles
Enfoque principal Automatización, observabilidad y monitoreo
Herramientas principales Terraform, CloudFormation
Actividades prácticas Escribir código en Terraform para infraestructura
Contenido adicional Entrevistas con expertos en DataOps

Conclusión

Esta semana proporciona conocimientos teóricos y prácticos sobre cómo automatizar y monitorear operaciones de datos, además de entender la importancia de la cultura y las prácticas en DataOps para garantizar la calidad y eficiencia en la gestión de datos.


Introducción a DataOps

Descripción

DataOps es una metodología que busca optimizar la entrega de datos y conocimientos a los clientes, garantizando la confianza en los datos, la rapidez en la entrega y la capacidad de realizar cambios con bajo riesgo. Inspirada en principios de manufactura lean y DevOps, esta disciplina se enfoca en crear sistemas eficientes y adaptables para equipos de datos.


¿Qué es DataOps?


Conceptos Clave

Concepto Descripción
Manufactura de datos La gestión de datos como una línea de producción, con etapas claramente definidas y controladas.
Iteración rápida Entregar versiones preliminares para obtener feedback temprano y ajustar rápidamente.
Automatización Automatizar pruebas, despliegues y monitoreo para reducir errores y aumentar velocidad.
Medición y control Uso de métricas para gestionar la calidad y eficiencia del proceso.

Principios de DataOps

  1. Construir sistemas de trabajo confiables: Garantizar que los datos y los insights sean confiables.
  2. Entrega incremental: Desarrollar en pequeños pasos, entregando valor en cortos ciclos.
  3. Automatización: Implementar pruebas, despliegues y monitoreo automáticos.
  4. Medición continua: Evaluar la calidad y eficiencia del proceso para mejorar constantemente.
  5. Enfoque en el cliente: Priorizar la satisfacción y éxito del usuario final.

Comparación con DevOps y Lean

Aspecto DataOps DevOps / Lean
Propósito Entregar datos y insights confiables rápidamente Entregar software de forma rápida y eficiente
Enfoque Manufactura de datos, calidad y control Automatización, ciclos cortos, mejora continua
Prácticas comunes Pruebas, despliegues automáticos, monitoreo Integración continua, despliegue continuo
Resultado esperado Datos confiables, cambios rápidos, menor riesgo Software funcional, entregas frecuentes

Cómo aplicar DataOps en el trabajo diario


Consejos para quienes comienzan en Data


El Manifiesto de DataOps

El manifiesto de DataOps busca definir los valores y principios fundamentales:


Reflexiones finales


Conclusión

DataOps es una disciplina que combina principios de manufactura, software y gestión para crear entornos de datos más confiables, rápidos y adaptables. Implementar sus prácticas puede reducir el estrés del equipo, mejorar la calidad del trabajo y acelerar la entrega de insights valiosos.


¡Recuerda! No seas héroe, construye sistemas, mide y mejora continuamente para lograr un equipo de datos eficiente y feliz.


Automatización en DataOps

Descripción

En este documento se analiza el pilar de automatización de DataOps, una disciplina que surge del DevOps y comparte varias prácticas y conceptos. La automatización en DataOps permite mejorar la eficiencia, control y calidad en la gestión de datos y código, mediante técnicas como CI/CD, control de versiones e infraestructura como código.


Introducción a DataOps y DevOps


Conceptos Clave de Automatización en DataOps

1. Integración y Entrega Continua (CI/CD)

2. Orquestación de Pipelines

3. Control de Versiones

4. Infraestructura como Código (IaC)


Interrelaciones en DataOps

Áreas relacionadas Descripción
Ingeniería de software Muchas prácticas de DataOps provienen de DevOps.
Gestión de datos Control de versiones de datos mejora la calidad y control del ciclo de vida.

Próximos pasos


Resumen

La automatización en DataOps es fundamental para mejorar la eficiencia, control y calidad en la gestión de datos. Las principales prácticas incluyen CI/CD, control de versiones y infraestructura como código, que permiten automatizar procesos, mantener trazabilidad y facilitar despliegues confiables. Estas prácticas se integran con otras áreas de la ingeniería de datos y software, fortaleciendo el ciclo de vida de los datos y las aplicaciones.


¿Quieres que agregue alguna fórmula matemática, ejemplo práctico o tabla adicional?


Introducción a Infrastructure as Code (IaC)

Descripción

La infraestructura como código (IaC) permite definir, desplegar y mantener recursos de infraestructura en la nube mediante programación. Esto automatiza la creación de recursos como redes, seguridad, computación, almacenamiento y otros recursos de gestión y análisis de datos. La práctica de IaC tiene raíces que datan de los años 70, con scripts básicos para gestionar máquinas físicas, y evolucionó con la llegada de la computación en la nube y herramientas modernas como Terraform y CloudFormation.


Historia y evolución de IaC

Época Descripción Herramientas y conceptos clave
1970s Gestión de máquinas físicas con scripts BAS Scripts de automatización básica
2006 Lanzamiento de EC2 en AWS Creación rápida de recursos en la nube
2010s Desarrollo de herramientas IaC Terraform, CloudFormation, Ansible

Herramientas principales de IaC

Característica Terraform CloudFormation
Soporte multi-nube No (solo AWS)
Lenguaje de configuración HCL JSON/YAML
Popularidad Alta Alta en AWS

Uso de Terraform en la práctica

Ejemplo de configuración para recursos en AWS

resource "aws_s3_bucket" "data_lake" {
  bucket = "${var.prefix}-datalake"
  acl    = "public-read"
}

Lenguaje HCL (HashiCorp Configuration Language)

Ejemplo de gestión con Terraform

Supongamos que quieres crear 5 instancias EC2:

Ventajas de Terraform


Resumen


Próximos pasos


¿Quieres que incluya alguna sección adicional, ejemplos específicos o tablas con comandos?


Guía para Crear una Instancia EC2 con Terraform

Descripción

Este documento explica el proceso para crear una instancia EC2 en AWS utilizando Terraform. Se abordan los conceptos básicos de la estructura de archivos de configuración, la declaración de proveedores, la definición de recursos y el flujo de trabajo para aprovisionar infraestructura en la nube. Además, se presenta un ejemplo práctico paso a paso para lanzar una instancia EC2 en la VPC predeterminada de la región de Virginia Occidental (US East 1).


Flujo de Trabajo para Crear Recursos con Terraform

  1. Escribir archivos de configuración: Definir los recursos deseados en archivos .tf.
  2. Preparar el espacio de trabajo: Ejecutar terraform init para instalar los proveedores necesarios.
  3. Planificación: Ejecutar terraform plan para visualizar las acciones que realizará Terraform.
  4. Aplicar cambios: Ejecutar terraform apply y aprobar para crear, actualizar o destruir recursos.

Estructura de los Archivos de Configuración

Los archivos .tf se estructuran en cinco secciones principales:

Sección Descripción
Configuración de Terraform Especifica los proveedores y versiones.
Proveedores Define los complementos necesarios para interactuar con recursos externos.
Recursos Declara los recursos que se desean crear (ej. instancias EC2).
Variables de entrada Variables configurables por el usuario.
Salidas Información que se desea obtener tras la creación de recursos.

Bloques de Código en Terraform

Cada sección se representa mediante bloques de código con estructura similar a JSON:

<palabra_clave> "<valor>" {
  <argumento> = <valor>
  ...
}

Ejemplo: Bloque de Proveedor AWS

provider "aws" {
  region = "us-east-1"
}

Nota sobre los Proveedores


Definición de una Instancia EC2

Para crear una instancia EC2, se utiliza un bloque de recurso:

resource "aws_instance" "mi_instancia" {
  ami           = "ami-0abcdef1234567890"  # ID de la AMI
  instance_type = "t2.micro"               # Tipo de instancia
  tags = {
    Name = "ServidorEjemplo"
  }
}

Pasos para Crear la Instancia EC2

  1. Inicializar Terraform:
terraform init
terraform plan
terraform apply

Resumen de Comandos Clave

Comando Función
terraform init Inicializa el directorio y descarga proveedores.
terraform plan Muestra el plan de ejecución.
terraform apply Ejecuta los cambios y crea los recursos.

Consideraciones Finales


Recursos útiles


¡Con estos pasos y conceptos, estarás listo para gestionar infraestructura en AWS usando Terraform de manera eficiente!


Uso de Variables, Salidas y Organización en Terraform

Descripción

En este documento se explica cómo mejorar la gestión de la infraestructura con Terraform mediante la utilización de variables de entrada, valores de salida y la organización del espacio de trabajo en múltiples archivos. Se abordan conceptos clave para parametrizar configuraciones, exportar atributos de recursos y mantener un proyecto ordenado y escalable.


1. Variables de Entrada en Terraform

¿Qué son las variables de entrada?

Permiten parametrizar la configuración, evitando valores codificados y facilitando la personalización sin editar los archivos principales.

Declaración de variables

Se declaran con la palabra clave variable:

variable "region" {
  description = "Nombre de la región de AWS"
  type        = string
  default     = "us-east-1"
}

variable "server_name" {
  description = "Nombre del servidor EC2"
  type        = string
}

Uso de variables en recursos

Se hace referencia a las variables con la sintaxis var.nombre_variable:

provider "aws" {
  region = var.region
}

resource "aws_instance" "web_server" {
  ami           = "ami-123456"
  instance_type = "t2.micro"
  tags = {
    Name = var.server_name
  }
}

Asignación de valores

terraform apply -var="server_name=MiServidor"
server_name = "MiServidor"

Terraform automáticamente usará este archivo al aplicar cambios.


2. Exportación de Atributos de Recursos (Valores de Salida)

¿Qué son los valores de salida?

Permiten exportar atributos de recursos, como identificadores o ARNs, para usarlos en otros contextos o scripts.

Declaración de valores de salida

Se declaran con la palabra clave output:

output "instance_id" {
  description = "ID de la instancia EC2"
  value       = aws_instance.web_server.id
}

output "instance_arn" {
  description = "ARN de la instancia EC2"
  value       = aws_instance.web_server.arn
}

Acceso a atributos

Se accede a los atributos del recurso usando la sintaxis:

aws_instance.nombre_recurso.atributo

Por ejemplo:

aws_instance.web_server.id
aws_instance.web_server.arn

Visualización de salidas

Luego de aplicar cambios con terraform apply, se pueden consultar con:

terraform output

o para una salida específica:

terraform output instance_id

3. Organización del Espacio de Trabajo

Problema de gestión en archivos grandes

Tener todos los recursos, variables y salidas en un solo archivo puede volverse inmanejable a medida que crece la infraestructura.

Mejores prácticas

Dividir la configuración en múltiples archivos:

Archivo Propósito
variables.tf Declaración de variables
outputs.tf Definición de valores de salida
providers.tf Configuración de proveedores
main.tf Recursos y configuraciones principales

Cómo funciona

Terraform concatena automáticamente todos los archivos .tf en un solo plan de ejecución, permitiendo una gestión modular y ordenada.

Ejemplo de estructura de archivos

variables.tf
providers.tf
outputs.tf
main.tf

Resumen


Próximo paso

En el siguiente video, se abordará el uso de módulos para organizar aún mejor el espacio de trabajo y cómo declarar fuentes de datos en Terraform.


¡Gracias por tu atención!


Resumen y Guía de Uso de Bloques de Datos y Módulos en Terraform

Introducción

Terraform permite gestionar recursos de infraestructura mediante archivos de configuración. Además de las variables y bloques de recursos, se pueden utilizar bloques de datos y módulos para mejorar la reutilización y la integración con recursos externos.


Bloques de Datos en Terraform

¿Qué son los bloques de datos?

Los bloques de datos (o data sources) son referencias a recursos existentes fuera de Terraform o en otros espacios de trabajo. Permiten consultar información sin crear o modificar recursos, facilitando la automatización y la integración.

Declaración de bloques de datos

Para declarar un bloque de datos:

data "<tipo_recurso>" "<nombre>" {
  <argumentos>
}

Ejemplo: Referenciar una subred existente

Supongamos que queremos usar una subred creada fuera de Terraform:

data "aws_subnet" "selected_subnet" {
  id = "<ID_de_subred>"
}

Luego, podemos usar su atributo id en la creación de una instancia EC2:

resource "aws_instance" "example" {
  subnet_id = data.aws_subnet.selected_subnet.id
  # otros atributos
}

Uso de bloques de datos para buscar recursos automáticamente

Por ejemplo, para obtener la AMI más reciente de Linux en AWS:

data "aws_ami" "latest_linux" {
  owners      = ["amazon"]
  most_recent = true
  filter {
    name   = "name"
    values = ["amzn2-ami-hvm-*-x86_64-gp2"]
  }
}

Y en la definición de la instancia EC2:

resource "aws_instance" "web" {
  ami           = data.aws_ami.latest_linux.id
  # otros atributos
}

Uso de Módulos en Terraform

¿Qué es un módulo?

Un módulo es un subdirectorio que agrupa recursos relacionados, permitiendo empaquetar y reutilizar configuraciones completas. Es útil para gestionar componentes complejos o repetitivos, como un sitio web completo.

Creación y uso de módulos

  1. Estructura del módulo:
/mi_modulo/
  main.tf
  variables.tf
  outputs.tf
  1. Llamar al módulo desde el directorio raíz:
module "sitio_web" {
  source = "./mi_modulo"
  nombre_servidor = var.nombre_servidor
}
  1. Definir variables de entrada en el módulo:
variable "nombre_servidor" {
  description = "Nombre del servidor"
}
  1. Asignar valores en terraform.tfvars:
nombre_servidor = "MiServidorWeb"
  1. Exportar salidas del módulo:

En outputs.tf del módulo:

output "id_servidor" {
  value = aws_instance.servidor.id
}

output "arn_servidor" {
  value = aws_instance.servidor.arn
}

En el archivo raíz, para acceder a estas salidas:

output "id_servidor" {
  value = module.sitio_web.id_servidor
}

output "arn_servidor" {
  value = module.sitio_web.arn_servidor
}

Pasos finales y recomendaciones

terraform init
terraform apply

Resumen en Tabla

Concepto Descripción Ejemplo
Bloques de datos Consultar recursos existentes sin crearlos data "aws_subnet" "selected" { id = "subnet-12345" }
Uso de atributos Referenciar atributos de recursos consultados data.aws_subnet.selected.id
Módulos Agrupar recursos en subdirectorios para reutilización module "web" { source = "./web_module" }
Variables de entrada Parámetros que se pasan a los módulos variable "nombre_servidor" {}
Salidas Valores exportados por módulos para ser usados en otros archivos output "id_servidor" { value = aws_instance.servidor.id }

Conclusión

El uso de bloques de datos y módulos en Terraform permite gestionar recursos de manera más eficiente, automatizar búsquedas de recursos existentes y estructurar configuraciones complejas en componentes reutilizables. La práctica constante y la consulta de la documentación oficial facilitarán un dominio avanzado de estas herramientas.


¡Nos vemos en el próximo tutorial para seguir explorando Terraform!


Resumen del Curso: Implementación de Recursos en la Nube con Terraform

Descripción General

Este curso explica cómo utilizar Terraform para crear y gestionar recursos en la nube, específicamente en AWS, mediante una arquitectura que incluye una base de datos RDS, una instancia EC2 que actúa como host bastión, y la configuración de redes y seguridad. El objetivo principal es aprender a definir, crear y gestionar estos recursos de forma automatizada y segura.


Arquitectura de la Solución

Componentes principales

Diagrama conceptual

Internet
   |
   | (SSH con clave pública)
   v
Host Bastión (EC2 en subred pública)
   |
   | (Conexión segura SSH)
   v
Red Privada
   |
   | (Conexión a RDS)
   v
Base de Datos RDS (en subred privada)

Pasos y Conceptos Clave

1. Recursos en Terraform

2. Creación de recursos

3. Gestión de claves SSH

4. Configuración del módulo y archivos


Resumen de archivos importantes

Archivo Función
variables.tf Definición de variables de entrada
outputs.tf Exportación de valores útiles para conexión y referencia
main.tf Declaración de recursos, módulos y configuración general
provider.tf Configuración de proveedores, regiones y otros servicios
network.tf Datos de la VPC, subredes y grupos de seguridad
rds.tf Configuración de la instancia RDS
ec2.tf Configuración de la instancia EC2 y generación de claves SSH
backend.tf Configuración para almacenamiento del estado de Terraform (local o remoto)

Conceptos importantes


Conclusión

Este laboratorio permite practicar la creación de recursos en AWS mediante Terraform, incluyendo la configuración de redes, seguridad, bases de datos y servidores bastión. La automatización y parametrización facilitan la gestión y escalabilidad de la infraestructura en la nube.


Próximos pasos


¿Listo para comenzar a practicar con Terraform?


Principios de Observabilidad y Monitoreo en DataOps

Introducción

En el contexto de DataOps, los principios y prácticas de observabilidad y monitoreo son fundamentales para garantizar la calidad y confiabilidad de los sistemas de datos. Estos conceptos tienen su origen en DevOps y en el desarrollo de software, adaptándose a los sistemas distribuidos y a la nube en la última década.

Origen y Evolución

Aplicación en Sistemas de Datos

Las mismas herramientas de observabilidad que se usan en software también pueden ser útiles para sistemas de datos. Sin embargo, en DataOps, además de aspectos técnicos, es crucial monitorear la calidad de los datos.

Calidad de Datos

Definiciones

Tipo de Datos Características Impacto
Alta calidad Precisión, completitud, disponibilidad oportuna, esquemas bien definidos Proporciona valor y decisiones confiables
Baja calidad Inexactos, incompletos, inutilizables Puede ser peor que no tener datos, genera decisiones erróneas y desconfianza

Consecuencias de Datos de Baja Calidad

Ejemplo de Problema de Calidad de Datos

Supongamos que una empresa en EE. UU. vende en Europa y cambia la moneda de dólares a euros en su base de datos transaccional. Aunque el sistema sigue funcionando y los datos parecen plausibles, puede ocurrir que:

Ejemplo de escenario:

La conversión de moneda no se refleja correctamente en los datos, causando una caída aparente en ingresos del 10-20%, aunque el sistema funcione normalmente.

Este ejemplo ilustra cómo un cambio en los datos puede afectar la percepción y decisiones, incluso si el sistema parece estar en funcionamiento.

Responsabilidad y Mitigación

Rol de la Observabilidad y Monitoreo de Datos

Conclusión

La observabilidad y el monitoreo en DataOps son esenciales para mantener la calidad y confiabilidad de los datos. La capacidad de detectar cambios o interrupciones rápidamente ayuda a evitar decisiones basadas en datos incorrectos y a mantener la confianza en los sistemas de datos.


¿Quieres profundizar más?

Escucha a Barr Moses, experto en observabilidad y monitoreo de datos, en el siguiente video (opcional).


Resumen y Conceptos Clave sobre la Observabilidad de Datos

Introducción a la Observabilidad de Datos

La observabilidad de datos es una disciplina que permite entender y monitorear el estado de los sistemas de datos, similar a la observabilidad en ingeniería de software. Su objetivo principal es ayudar a los equipos de datos a recuperar la confianza en sus datos, identificando problemas y mejorando continuamente la calidad y confiabilidad de los datos.


Problemas que Resuelve la Observabilidad de Datos


Componentes del Estado de los Datos

El estado actual de los datos se compone de tres elementos principales:

Componente Descripción
Datos en sí mismos La información que se ingiere en el sistema.
Código Transformaciones y procesos escritos por ingenieros.
Sistema Infraestructura que ejecuta trabajos y gestiona datos.

Cada uno puede fallar, afectando la calidad y disponibilidad de los datos.


Métricas Clave en la Observabilidad de Datos

Al igual que en la ingeniería de software, se deben monitorear métricas que indiquen la salud del sistema de datos:

  1. Número de incidentes: ¿Cuántos problemas de datos ocurren diariamente?
  2. Tiempo de detección: ¿Cuánto tarda en detectarse un problema?
  3. Tiempo de resolución: ¿Cuánto tiempo tarda en resolverse un incidente?

Métricas adicionales


KPIs para Mejorar la Gestión de Datos

KPI Descripción
Número de incidentes Frecuencia de problemas de datos.
Tiempo de detección Rapidez en identificar un problema.
Tiempo de resolución Velocidad en solucionar incidentes.

Estos KPIs ayudan a los equipos a mejorar la confiabilidad y disponibilidad de los datos con el tiempo.


Historias de Éxito en la Implementación de la Observabilidad

Caso JetBlue


Lecciones y Consejos para Profesionales y Estudiantes


Reflexión Final

La observabilidad de datos es esencial para garantizar la calidad, confiabilidad y disponibilidad de los datos en un entorno cada vez más complejo y dinámico. La clave está en monitorear continuamente, entender las causas raíz y aprender de las experiencias para mejorar los sistemas de datos.


Recursos y Prácticas Recomendadas


¡Mantente curioso y enfocado en entender a tus clientes y sus necesidades para construir sistemas de datos confiables y escalables!


Guía para la Observabilidad y Monitoreo de Datos

Introducción

La observabilidad y el monitoreo de datos son fundamentales para garantizar la calidad y fiabilidad de los sistemas de datos. Sin embargo, es importante saber por dónde comenzar y qué aspectos priorizar para evitar confusiones y fatiga por alertas innecesarias.

Selección de Métricas Clave

En lugar de monitorear todo, se recomienda enfocarse en las métricas más relevantes para las partes interesadas. Algunas métricas comunes incluyen:

Métrica Descripción
Número total de registros por lote Cantidad de registros procesados en un intervalo de tiempo determinado.
Rango de valores en una columna Verificar que los valores se mantengan dentro de umbrales aceptables.
Número de valores nulos Contar registros con datos faltantes en una tabla.
Diferencia de tiempo entre ahora y la última marca de tiempo Supervisar la frescura de los datos, asegurando que no tengan más de 24 horas de antigüedad.

Priorización según las Partes Interesadas

Es crucial entender qué aspectos de los datos son más importantes para los usuarios o stakeholders del proyecto. Por ejemplo:

Identificación de Componentes Clave

Es necesario determinar qué componentes de los datos son vitales para el éxito del proyecto y cuáles pueden ser ignorados temporalmente. Esto ayuda a enfocar los esfuerzos y evitar alertas irrelevantes.

Comunicación y Validación

Métodos de Supervisión

Existen diversas maneras de supervisar la calidad de los datos:

Herramienta Recomendada: Great Expectations

Una herramienta de código abierto que permite probar y validar la calidad de los datos de forma automatizada. En el próximo laboratorio, se explorará su uso en detalle.

Nota: La implementación de buenas prácticas en la supervisión de datos ayuda a prevenir problemas mayores y mantiene la integridad del sistema.

Conclusión

El monitoreo efectivo comienza con entender las necesidades de las partes interesadas, priorizar las métricas clave y utilizar las herramientas adecuadas para mantener la calidad de los datos. La comunicación y las validaciones tempranas son esenciales para un sistema confiable y eficiente.


¿Quieres que agregue alguna sección adicional o ejemplos específicos?


Resumen y Conceptos Clave sobre la Calidad de Datos y Great Expectations

Introducción

En esta conversación, Abe Gong, cofundador y CEO de Great Expectations, comparte su experiencia y visión sobre la calidad de los datos y cómo su proyecto ayuda a garantizarla. La inspiración surge de su trabajo en ciencia de datos y en la gestión de datos en salud, donde la calidad es crucial.

Origen de Great Expectations

¿Qué es la calidad de los datos?

La calidad de los datos y su importancia

Uso de datos Aspectos importantes
Paneles de métricas Registro correcto, distribución adecuada, bajo retraso
Modelos de ML Distribuciones, sesgos, confiabilidad

Great Expectations y las pruebas de datos

Uso correcto de Great Expectations

Recomendaciones y advertencias

Consejos para los estudiantes

Conclusión


Referencias


¿Quieres que agregue ejemplos específicos, fórmulas en LaTeX o tablas adicionales?


Guía de flujo de trabajo con Great Expectations para pruebas de calidad de datos

Descripción general

Great Expectations es una herramienta que permite realizar pruebas de calidad de datos mediante un flujo de trabajo estructurado. Este proceso implica definir los datos a validar, establecer expectativas o pruebas, y validar los datos en función de dichas expectativas. Los componentes principales que facilitan este flujo de trabajo son:


Componentes principales y flujo de trabajo

1. Crear un contexto de datos

El contexto de datos actúa como punto de entrada a la API de Great Expectations, permitiendo gestionar objetos y procesos necesarios para la validación.

import great_expectations as ge

context = ge.get_context()

Este objeto permite configurar y acceder a propiedades y metadatos del proyecto.

2. Declarar la fuente de datos

La fuente de datos indica de dónde se obtendrán los datos a validar. Puede ser:

# Ejemplo de declaración de fuente de datos
datasource = context.sources.add_pandas(
    name="mi_fuente",
    data_asset_name="mi_activo"
)

3. Definir activos de datos

Un activo de datos es una colección de registros dentro de la fuente, como una tabla o un archivo. Se puede dividir en lotes para validar segmentos específicos, por ejemplo, por mes o por tienda.

# Dividir datos en lotes
batches = datasource.get_batch_list_from_batch_request(batch_request)

4. Crear solicitudes por lotes

Las solicitudes por lotes permiten recuperar datos específicos para la validación.

batch_request = datasource.build_batch_request()

5. Definir expectativas

Las expectativas son reglas o condiciones que los datos deben cumplir. Pueden ser:

Ejemplo de definición de expectativas:

# Crear un conjunto de expectativas
expectation_suite = context.create_expectation_suite("suite_ejemplo")
# Añadir expectativas
expectation_suite.add_expectation(
    expectation_type="expect_column_values_to_not_be_null",
    kwargs={"column": "edad"}
)

6. Validar datos

Para validar, se crea un validador que recibe la solicitud por lotes y el conjunto de expectativas.

validator = context.get_validator(
    batch=batch,
    expectation_suite=expectation_suite
)

Se puede validar manualmente o mediante un punto de control que automatiza el proceso.

# Crear un punto de control
checkpoint = context.add_or_update_checkpoint(
    name="mi_punto_de_control",
    config={
        "validations": [
            {
                "batch_request": batch_request,
                "expectation_suite_name": "suite_ejemplo"
            }
        ]
    }
)
# Ejecutar el punto de control
results = checkpoint.run()

Almacenes y almacenamiento de metadatos

Great Expectations soporta diferentes tipos de almacenes para gestionar la información del proyecto:

Tipo de Almacén Descripción
Expectation Store Almacena las suites de expectativas
Validation Store Guarda los resultados de validaciones
Checkpoint Store Configura y almacena puntos de control
Data Docs Store Genera informes y documentación de los resultados

Estos almacenes se configuran y gestionan a través del objeto de contexto.


Resumen del flujo de trabajo

  1. Crear un contexto de datos
  2. Declarar la fuente de datos
  3. Definir los activos de datos y dividir en lotes
  4. Crear solicitudes por lotes
  5. Definir las expectativas
  6. Validar los datos mediante un validador o un punto de control
  7. Guardar y consultar los resultados en los almacenes correspondientes

Conclusión

Este flujo estructurado permite automatizar y gestionar de manera eficiente la validación de datos, asegurando su calidad y cumplimiento con las expectativas definidas. En el siguiente ejemplo, se aplicarán estos pasos a un conjunto de datos de ejemplo para ilustrar su uso práctico.


¿Quieres que prepare un ejemplo completo en código con datos ficticios?


Guía para Validación de Datos con Great Expectations

Descripción general

Este documento explica cómo utilizar la biblioteca Great Expectations para validar datos en una base de datos SQL, específicamente en una tabla de pagos de una base de datos de alquiler de DVDs. Se cubren los pasos para configurar el entorno, conectar con la base de datos, definir expectativas, crear lotes de datos, y automatizar validaciones mediante puntos de control.


Pasos para la Validación de Datos

1. Instalación y Configuración Inicial

pip install great_expectations
great_expectations init

Este comando crea la estructura de carpetas necesaria, incluyendo tiendas backend, puntos de control, expectativas y documentación.

2. Creación del Contexto en un Notebook

import great_expectations as ge

context = ge.get_context()
context.sources.add_sql(
    name="my_datasource",
    connection_string="postgresql://usuario:contraseña@host:puerto/base_de_datos"
)
payment_asset = context.add_table_asset(
    name="payment_tb",
    table_name="payment"
)

3. Creación y Configuración de Lotes

payment_asset.add_splitter_datetime_part(
    column_name="payment_date",
    datetime_part="month"
)
batch_request = payment_asset.build_batch_request()
batches = payment_asset.get_batch_list_from_batch_requests(batch_request)

4. Definición de Expectativas

suite = context.add_or_update_expectation_suite("mysuite")
validator = context.get_validator(
    batch_request=batch_request,
    expectation_suite_name="mysuite"
)
validator.save_expectation_suite(discard_failed_expectations=False)

5. Automatización con Puntos de Control

context.add_or_update_checkpoint(
    name="mycheckpoint",
    validations=[
        (batch, "mysuite") for batch in batches
    ]
)
results = context.run_checkpoint("mycheckpoint")

6. Visualización de Resultados

context.build_data_docs()

Esto genera enlaces con estadísticas y resultados de las validaciones, permitiendo revisar detalles como expectativas cumplidas y fallidas.


Resumen de Conceptos Clave

Concepto Descripción
Contexto Objeto principal para gestionar la interacción con datos y expectativas.
Fuente de datos Conexión a la base de datos o archivo de datos.
Activo de datos Representación de una tabla o conjunto de datos para validar.
Lote (Batch) Subconjunto de datos, por ejemplo, por mes, para validaciones específicas.
Expectativa Condición o regla que los datos deben cumplir.
Suite de expectativas Conjunto de expectativas agrupadas para un análisis coherente.
Validador Objeto que ejecuta las expectativas sobre un lote de datos.
Punto de control Automatiza la ejecución de validaciones en múltiples lotes.
Documentos de datos Reportes visuales con resultados y estadísticas de las validaciones.

Conclusión

Este proceso permite validar de manera automatizada y estructurada la calidad de los datos en bases de datos SQL, asegurando que cumplen con las expectativas definidas. La integración con notebooks y la automatización mediante puntos de control facilitan la gestión continua de la calidad de datos.


¡Practica!

Ahora que conoces los pasos principales, te invitamos a practicar en tu entorno y validar tus propios conjuntos de datos usando Great Expectations.


Resumen de la Semana: DataOps, Automatización y Observabilidad en Datos

Introducción

Esta semana se ha enfocado en el concepto de DataOps, que busca optimizar la gestión y el flujo de datos mediante la automatización, infraestructura como código, observabilidad y supervisión de canalizaciones de datos para garantizar valor a las partes interesadas.

Conceptos Clave

1. DataOps

2. Infraestructura como Código (IaC)

3. Observabilidad y Supervisión

4. Pilares Clave de la Observabilidad de Datos (Barr Moses)

5. Prueba de Calidad de Datos (Abe Gong)

6. Contratos de Datos (Chad Sanderson)

Laboratorio de la Semana

Próximos Pasos

Resumen en Tabla

Tema Descripción
DataOps Automatización y gestión eficiente de datos
Infraestructura como Código Uso de Terraform para definir y mantener infraestructura de datos
Observabilidad Monitoreo y trazabilidad de datos y canalizaciones
Herramientas Clave CloudWatch, Great Expectations, contratos de datos
Próximos pasos Enfoque en orquestación y control avanzado de canalizaciones de datos

Lista de Conceptos Importantes


¡Nos vemos en la próxima semana para seguir profundizando en la orquestación y gestión avanzada de datos!