La capacidad de extraer información valiosa de los datos generados por la actividad de las empresas es una necesidad cada vez más demandada. Con frecuencia, el procesamiento de esta información recae en soluciones de software complejas, costosas y heterogéneas entre sí. En el ámbito del BI se necesita identificar patrones, realizar comparaciones y generar clasificaciones para prever tendencias y optimizar procesos. En este contexto, entran en juego las funciones analíticas de Oracle.
Su particularidad radica en que permiten obtener valores calculados a partir de un conjunto de filas relacionadas, aplicando el resultado directamente a cada fila individual.
A diferencia de las funciones agregadas tradicionales, que generan un único resultado por grupo, las funciones analíticas procesan múltiples filas por grupo y proporcionan resultados específicos para cada una de ellas, manteniendo así el detalle de los datos.
¿Qué ventajas ofrecen las funciones analíticas de Oracle?
Su uso implica un conjunto de ventajas que se detallan a continuación:
- Mejor rendimiento: las funciones analíticas están optimizadas para ejecutarse dentro del propio motor de base de datos de Oracle, lo que reduce la necesidad de mover grandes volúmenes de datos a herramientas externas.
- Flexibilidad: permiten realizar análisis complejos directamente en SQL, simplificando el código y reduciendo la dependencia de otros lenguajes o plataformas.
- Escalabilidad: están diseñadas para manejar grandes volúmenes de datos, lo que las hace óptimas para entornos empresariales.
- Integración natural con BI: Oracle es compatible con múltiples herramientas de Business Intelligence, como Oracle Analytics Cloud, Power BI o Tableau, lo que permite utilizar estas funciones de manera transparente.
¿Qué tipos de funciones se pueden utilizar?
A continuación, se presentan las principales funciones analíticas de Oracle clasificadas según su finalidad.
1. Funciones de Clasificación
Estas funciones ayudan a clasificar filas dentro de una partición o conjunto de datos:
- RANK: asigna un rango a cada fila dentro de una partición de un conjunto de resultados, con saltos en los números cuando hay coincidencias.
- DENSE_RANK: similar a RANK, pero sin dejar huecos en los rangos cuando hay coincidencias.
- ROW_NUMBER: asigna un número único y consecutivo a cada fila dentro de una partición.
2. Funciones de Agregación Analítica
Permiten realizar cálculos acumulados o basados en particiones:
- SUM: calcula el total acumulado dentro de una partición.
- AVG: calcula el promedio acumulado dentro de una ventana.
- MIN / MAX: calcula el mínimo o máximo dentro de una ventana.
3. Funciones de Desplazamiento
Estas funciones trabajan con valores de filas anteriores o siguientes dentro de una partición.
- LAG: obtiene el valor de una fila anterior dentro de la partición.
- LEAD: obtiene el valor de una fila posterior dentro de la partición.
4. Funciones de Ventana Móvil
Son útiles para cálculos móviles, como promedios o sumas sobre un rango de filas.
- NTILE: divide las filas de una partición en un número especificado de grupos aproximadamente iguales.
- FIRST_VALUE / LAST_VALUE: obtiene el primer o último valor dentro de una ventana definida.
5. Funciones Estadísticas
Estas funciones calculan valores estadísticos dentro de un grupo o ventana.
- STDDEV / VARIANCE: calculan la desviación estándar o la varianza.
Estructura sintáctica
Las funciones analíticas definen su estructura sintáctica de la siguiente forma.
Analytic_Function(argument1, argument2, …)
OVER (
[PARTITION BY partition_column1, partition_column2, …]
[ORDER BY order_column [ASC|DESC]]
[WINDOWS_CLAUSE]
)
Analytic_Function: el nombre de la función analítica que se desea utilizar.
Arguments: los argumentos que se pasan a la función analítica. Según la función, estos argumentos pueden variar. Por ejemplo, ROW_NUMBER () no requiere ningún argumento, mientras que SUM () y AVG () normalmente requieren un nombre de columna como argumento.
Cláusula OVER: aquí se especifica la ventana sobre la que opera la función. Contiene los siguientes elementos opcionales:
- PARTITION BY: Esta cláusula divide el conjunto de resultados en particiones. La función se aplica por separado a cada partición. Si se omite, la función opera sobre todo el conjunto de resultados.
- ORDER BY: Esta cláusula especifica el orden de las filas dentro de cada partición. Determina la secuencia en la que se aplica la función. Si se omite, la función se aplica sin tener en cuenta el orden.
- WINDOWS_CLAUSE: esta cláusula define con más detalle la ventana dentro de cada partición. Incluye opciones como ROWS, RANGE, UNBOUNDED PRECEDING, BETWEEN, etc., que especifican el rango de filas que se deben considerar para el cálculo. Esta cláusula es opcional.
Ejemplo de uso
Una empresa quiere analizar las tendencias de ventas de sus productos a lo largo del tiempo, calculando el crecimiento porcentual mes a mes y clasificando los productos con mejor resultado en sus ventas mensuales.
Tenemos la tabla HISTORICO_VENTAS con las siguientes columnas:
- MES (Mes del año, en formato AAAAMM)
- PRODUCTO (Nombre del producto)
- VENTAS (Total de ventas del producto en el mes)
Tenemos la siguiente información registrada en la tabla:
Para realizar el análisis deseado utilizaremos dos funciones analíticas:
- LAG(VENTAS) OVER (PARTITION BY PRODUCTO ORDER BY MES): utilizaremos la función para recuperar el valor de las ventas del mes anterior para cada producto. Será utilizada para el cálculo del crecimiento porcentual.
- RANK() OVER (PARTITION BY MES ORDER BY VENTAS DESC): con esta función clasificaremos los productos por mayor volumen de ventas en cada mes.
Utilizamos la siguiente sentencia SQL para obtener la información requerida:
El análisis resultante muestra el crecimiento porcentual mes a mes de las ventas de cada producto, y permite identificar qué productos lideraron las ventas en cada mes.
Las funciones analíticas de Oracle son una herramienta poderosa para el análisis de datos. Su capacidad para manejar grandes volúmenes de información y realizar cálculos complejos directamente en el motor de base de datos las hace muy valiosas para cualquier estrategia de Business Intelligence.
En hiberus, tenemos una amplia experiencia en transformar la forma en que las organizaciones manejan sus datos. Contamos con un equipo de especialistas en Busines Intelligence maximizando el valor de tus datos para impulsar tus decisiones estratégicas.
¿Quieres más información sobre nuestros servicios de Business Intelligence?
Contacta con nuestro equipo de expertos en BI