sábado, 12 de octubre de 2024

Curso de DevOps: Automatización III. Descubriendo la necesidad de automatización

 Vamos a es especificar los métodos que pueden ayudar a encontrar procesos comerciales clave que son candidatos valiosos para la automatización de IT. Una de las tareas esenciales del ingeniero de soporte de automatización es identificar el método de búsqueda de procesos de automatización. Podemos utilizar uno o una combinación de varios métodos diferentes para obtener más detalles sobre el sistema actual que puede automatizarse.

Curso de DevOps: Descubriendo la necesidad de automatización

En primer lugar estaría la identificación de procesos, es decir debemos identificar dichos procesos. En segundo lugar está la implementación del proceso, es necesario encontrar en qué consistirá la implementación de la automatización del proceso. Pero antes de implementarlo es necesario realizar un análisis adecuado, lo que conduce a múltiples alternativas diferentes que pueden utilizarse para implementarlo. El descubrimiento de procesos es también una de las técnicas que se pueden aplicar para su automatización. A veces encontraremos que es necesario rediseñar algunas de las automatizaciones que ya se han realizado. Para lo cual es necesario ajustar el proceso rediseñándolo. Y, por último, debemos asegurarnos de poder utilizar la capacidad de seguimiento y control de procesos. Esto genera gran cantidad de datos que nos proporcionan una buena comprensión de la automatización actual, que nos permitirá aplicar técnicas para futuras necesidades de automatización.

Ahora nos vamos a centrar en el enfoque que podemos adoptar para identificar procesos de automatización.

Curso de DevOps: Descubriendo la necesidad de automatización

Siempre debemos comenzar por identificar los tipos de casos. Para cada caso tendremos ciertas funciones, ese es el segundo paso que tenemos que identificar. A continuación, debemos derivar una matriz de casos y funciones que nos ayude a comprender qué parte de la funcionalidad se puede automatizar y qué parte de la funcionalidad no se puede automatizar. Cualquiera que sea el resultado de las métricas, lo recogeremos  y comenzaremos a gestionar el proceso de automatización. Para ello, adoptaremos las mejores prácticas para dividir procesos, con la ayuda de las pautas prescritas por el arquitecto de automatización.

Curso de DevOps: Descubriendo la necesidad de automatización

A continuación nos centraremos en la gestión de la automatización de procesos de negocio,

los procesos de negocio son propensos a cambios. Por lo tanto, siempre debemos idear un enfoque sólido y ágil para gestionar la automatización de los procesos de negocio. Es necesario adoptar el ciclo de vida adecuado para la mejora de los procesos de negocio, que incluya pasos como descubrir, analizar, rediseñar, implementar y monitorear. El ciclo de vida de mejora de los procesos de negocio proporcionará resultados que podemos utilizar para comenzar una nueva fase de gestión de la automatización de procesos comerciales, que se denomina ciclo de vida de realización comercial, donde se obtienen los resultados del ciclo de vida del proceso comercial. Siempre comenzamos con identificar. Luego debemos medir utilizando varias métricas diferentes que nos ayuden a identificar el costo de ejecución correcto del proceso. En tercer lugar, tenemos ejecutar. Y finalmente necesitamos identificar los KPI correctos que nos ayuden a sostener el proceso.

Debemos comprender que obtendremos suficiente información del seguimiento del ciclo de vida de mejora de los procesos de negocio que nos ayudará a identificar y crear informes de KPI para su sostenibilidad.

Curso de DevOps: Descubriendo la necesidad de automatización

Finalmente, dividiremos el mecanismo de automatización de procesos de negocio en dos partes diferentes, tal como se muestra en la imagen superior. Tenemos la automatización de procesos de negocio, donde nuestro enfoque estará en la implementación para derivar la solución, que incluye actividades como el desarrollo de software y la integración de sistemas. En segundo lugar está el análisis y la optimización, que incluye la toma de decisiones, como comprar o desarrollar. Derivar el diseño y la arquitectura de la solución adecuada y preparar una documentación sólida del proceso.

 

sábado, 5 de octubre de 2024

Cláusula CASE de SQL

 La expresión CASE se utiliza para implementar la lógica si-entonces.

Sintaxis

CASE expresión_entrada

WHEN compara1 THEN resultado1

[WHEN compara2 THEN resultado2]...

[ELSE resultadoX]

END

CASE

WHEN condicion1 THEN resultado1

[WHEN condicion2 THEN resultado2]...

[ELSE resultadoX]

 

SELECT CASE en SQL

Observaciones
La expresión CASE simple devuelve el primer resultado cuyo valor comparaX es igual a la expresión_entrada.
La expresión CASE buscada devuelve el primer resultado cuya condiciónX es verdadera.

Ejemplo

El CASE buscado en la SELECT (Coincide con una expresión booleana) y devuelve resultados cuando una expresión booleana es VERDADERA. (Esto difiere del caso simple, en el que sólo se puede verificar la equivalencia con una entrada).

SELECT Id, IdArticulo, Precio,

CASE WHEN Precio < 10 THEN 'BARATO'

WHEN Precio < 20 THEN 'ALCANZABLE'

ELSE 'CARO'

END AS RangoPrecio

FROM Precio_Articulos 

Devolverá un resultado de este estilo:d ItemId Price PriceRating

1 100 34.5 CARO

2 145 2.3 BARATO

3 100 34.5 CARO

4 100 34.5 CARO

5 145 10 ALCANZABLE

SUM y CASE

Utilizaremos SUM junto con CASE para contar el número de filas en una columna que cumpla una condición.

CASE se puede utilizar junto con SUM para devolver un recuento de solo aquellos elementos que coincidan con una condición predefinida. El truco consiste en devolver resultados binarios que indiquen coincidencias, de modo que se devuelvan "1" para las entradas coincidentes. Se puede sumar para contar el número total de coincidencias. Dada la siguiente tabla Precio_Articulos, digamos que deseamos conocer el número total de artículos que se han categorizado como "CARO":

SELECT

COUNT(Id) AS CuentaArticulos,

SUM ( CASE

WHEN RangoPrecio = 'CARO' THEN 1

ELSE 0

END

) AS CUENTA_CAROS

FROM Precio_Articulos

 

Query Alternativa:

SELECT

COUNT(Id) as CuentaArticulos,

SUM (CASE RangoPrecio

WHEN 'CARO' THEN 1

ELSE 0

END

) AS CUENTA_CAROS

FROM Precio_Articulos

Abreviar CASE en una SELECT

Esta variante abreviada de CASE evalúa una expresión (normalmente una columna) frente a una serie de valores. Esta variante es un poco más corta y evita repetir la expresión evaluada una y otra vez.  Además aún se puede utilizar la cláusula ELSE:

SELECT Id, ArticuloId, Precio,

CASE Precio WHEN 5 THEN 'BARATO'

WHEN 15 THEN 'ALCANZABLE'

ELSE 'CARO'

END as RangoPrecio

FROM Precio_Articulos

Un poco de precaución, pues hay que tener en cuenta de que cuando se utiliza la variante corta, la declaración completa es evaluada en cada WHEN. Por ello la siguiente query:

SELECT

CASE ABS(CHECKSUM(NEWID())) % 4

WHEN 0 THEN 'Dr'

WHEN 1 THEN 'Master'

WHEN 2 THEN 'Mr'

WHEN 3 THEN 'Mrs'

END

Esta query puede producir un resultado NULL. Esto se debe a que en cada WHEN, la clausula NEWID() se vuelve a llamar con un nuevo resultado.

Es mejor utilizar esta query equivalente:

SELECT

CASE

WHEN ABS(CHECKSUM(NEWID())) % 4 = 0 THEN 'Dr'

WHEN ABS(CHECKSUM(NEWID())) % 4 = 1 THEN 'Master'

WHEN ABS(CHECKSUM(NEWID())) % 4 = 2 THEN 'Mr'

WHEN ABS(CHECKSUM(NEWID())) % 4 = 3 THEN 'Mrs'

END

Por lo tanto, se pueden omitir todos los casos WHEN y dar como resultado NULL.

Usando CASE en una cláusula UPDATE

Muestra sobre aumentos de precios:

UPDATE Tabla_Precios

SET Price = Precio *

CASE Id_Articulo

WHEN 1 THEN 1.05

WHEN 2 THEN 1.10

WHEN 3 THEN 1.15

ELSE 1.00

END

Usando CASE en la cláusula ORDER BY

CASE ordena en último lugar los valores NULL de modo que, '0' representa los valores conocidos y se clasifican en primer lugar, mientras que  '1' representa los valores NULL y se clasifican en último lugar:

SELECT ID, REGION, CIUDAD, DEPARTAMENTO, NUMERO_EMPLEADO

FROM TABLA_DEPARTAMENTOS

ORDER BY

CASE WHEN REGION IS NULL THEN 1

ELSE 0

END,

REGION

Este es un ejemplo del resultado que podría dar:

ID REGION CITY DEPARTMENT EMPLOYEES_NUMBER

10 Andalucía Almería INVESTIGACION 13

14 Andalucía Ecija VENTAS 12

9 Cantabria Torrelavega VENTAS 8

12 Castilla la Mancha Toledo MARKETING 9

5 La Rioja  Arnedo INVESTIGACION 11

15 NULL Torrejon de Ardoz MARKETING 12

4 NULL Zaragoza INNOVACION 11

2 NULL Requena RECURSOS HUMANOS 9

Para ordenar registros por el valor más bajo de 2 columnas

Vamos a imaginar que necesitamos ordenar registros por el valor más bajo de cualquiera de las dos columnas. Algunas bases de datos podrían usar una función MIN() o LEAST() de este modo (... ORDER BY MIN(Fecha1, Fecha2)), pero en SQL estándar, debemos utilizar una expresión CASE. La expresión CASE en la consulta siguiente mira las columnas Fecha1 y Fecha2, y verifica cuál tiene el valor más bajo y ordena los registros según este valor.

Por ejemplo, dados estos datos: Las fechas están en formato inglés AAAA-MM-DD

d ate1 Date2

1 2017-01-01 2017-01-31

2 2017-01-31 2017-01-03

3 2017-01-31 2017-01-02

4 2017-01-06 2017-01-31

5 2017-01-31 2017-01-05

6 2017-01-04 2017-01-31

Utilizamos esta query

SELECT Id, Fecha1, Fecha2

FROM Tabla_Fechas

ORDER BY CASE

WHEN COALESCE(Fecha1, '2000-01-01') < COALESCE(Fecha2, '2000-01-01') THEN Fecha1

ELSE Fecha2

END

El resultado sería este:

Id Date1 Date2

1 2017-01-01 2017-01-31

3 2017-01-31 2017-01-02

2 2017-01-31 2017-01-03

6 2017-01-04 2017-01-31

5 2017-01-31 2017-01-05

4 2017-01-06 2017-01-31

Como se puede ver, la fila con Id = 1 es la primera, debido a que Fecha1 tiene el registro más bajo de toda la tabla 2017. (01-01), la fila Id = 3 es la segunda porque Fecha2 es igual a 2017-01-02, que es el segundo valor más bajo de la tabla, etc.

Así que hemos ordenado los registros del 2017-01-01 al 2017-01-06 de forma ascendente y no nos importa si el valor se encuentra en la columna Fecha1 o en Fecha2.