Utilizar fórmulas avanzadas para optimizar el rendimiento

Objective

After completing this lesson, you will be able to evalúe cuándo utilizar fórmulas avanzadas en su historia de planificación y aplique las mejores prácticas para optimizar el rendimiento.

Antes de empezar esta lección

En esta lección, exploraremos los temas de rendimiento relacionados con las fórmulas avanzadas; sin embargo, no cubriremos cómo crear pasos de acción de datos de fórmulas avanzadas ni cómo se procesan los scripts.

Crear pasos de acción de datos de fórmula avanzada

Existen dos formas principales de crear un paso de fórmula avanzada en una acción de datos. El editor visual permite a los usuarios empresariales sin experiencia en programación diseñar fórmulas arrastrando y soltando en lugar de escribir directamente scripts, sin embargo, existen limitaciones y el editor de scripts se utiliza para definir y diseñar escenarios empresariales complicados.

Los temas relacionados con la creación, configuración y ejecución de acciones de datos de fórmulas avanzadas se tratan en las siguientes lecciones del curso Aprovechamiento de funciones avanzadas en SAP Analytics Cloud para planificación:

  1. Uso del editor visual para crear una acción de datos de fórmula avanzada
  2. Uso del editor de scripts para crear una acción de datos de fórmula avanzada

Guía de referencia de fórmulas avanzadas

Los pasos de fórmula avanzada en las acciones de datos le proporcionan mucha más flexibilidad para ejecutar cálculos en datos del modelo de planificación. Los resultados del cálculo se almacenan en las celdas base del modelo, lo que significa que puede ejecutar cálculos y copiar datos en diferentes conjuntos de filtros.

La sintaxis y la semántica de los pasos de fórmula avanzada en las acciones de datos de SAP Analytics Cloud se encuentran en el Manual de referencia de fórmulas avanzadas.

Comprender las reglas generales para los cálculos de fórmulas avanzadas para la planificación

Es importante que esté familiarizado con los comportamientos generales de las fórmulas avanzadas y cómo se procesan los cálculos.

Cuatro cosas clave para entender:

  1. Las fórmulas avanzadas se crean como un paso de acción de datos. Los pasos de acción de datos se ejecutan secuencialmente. El siguiente paso de acción de datos se calcula en función del resultado del anterior.
  2. En fórmulas avanzadas, cada línea de instrucción hereda los resultados de cálculo de líneas anteriores de instrucciones.
  3. Las fórmulas avanzadas realizan todos los cálculos solo con miembros a nivel de hoja que no tienen ninguna fórmula de cuenta definida. No se admiten otros miembros que tengan miembros secundarios.
  4. En una función RESULTLOOKUP, los valores de diferentes fracciones de datos devueltos por RESULTLOOKUP no se agregan (a menos que los defina explícitamente en una función AGGREGATE_DIMENSION).

El artículo de SAP Help Portal Comprender las reglas generales para los cálculos de fórmulas avanzadas para la planificación es una referencia para explicaciones y ejemplos de las reglas generales enumeradas anteriormente, así como información sobre temas como el alcance del cálculo y las reglas de cálculo.

Fórmulas avanzadas

Al escribir un paso de fórmulas avanzadas en una acción de datos, querrá tener en cuenta el rendimiento de su script. Al igual que con la escritura de scripts para widgets, en una fórmula avanzada en una acción de datos, a menudo también hay varias formas diferentes de obtener los mismos resultados de cálculo.

En esta lección, observaremos dos escenarios:

  1. Evaluación de tres fórmulas utilizadas en un paso de fórmulas avanzadas que pueden realizar la misma tarea.
  2. Optimizar una acción de datos con un paso de fórmula avanzada que utiliza la función Link().

Escenario 1: Evaluación de fórmulas que pueden realizar la misma tarea

Evaluar el script y elegir el más eficiente ahorrará tiempo a sus usuarios de planificación. En este escenario, utilizamos tres fórmulas avanzadas separadas que se han diseñado para realizar la misma tarea. Puede ver los tres iniciadores de acciones de datos en la siguiente historia. Mientras que los tres realizarán el cálculo correctamente, la evaluación de las fórmulas y la selección de la correcta para satisfacer sus necesidades garantizarán un rendimiento óptimo de nuestra historia de planificación.

Veamos con más detalle una historia de planificación simplificada. Veremos los costes de mano de obra de un producto, en este ejemplo, Zapatillas de tenis.

Sus costes de mano de obra se han planificado manualmente para 2025 para la región Pacífico y la región Medio oeste. Para 2026, desea planificar los costes de mano de obra, pero solo para el Pacífico. Para ello, utilizará una fórmula avanzada para copiar los datos de 2025 y actualizar el plan 2026 con un porcentaje de revaloración fijo del 10%. Esto significa que los costes de mano de obra de enero de 2025 se copian en enero de 2026 y, a continuación, el valor copiado se incrementa en un 10%. Lo mismo para febrero a diciembre.

Observe tres fórmulas avanzadas diferentes y evalúelas para ver cuál debería ser la más eficiente para su cálculo, a fin de optimizar el rendimiento de la historia.

Historia con tres acciones de datos en la parte superior y dos tablas.

Las tablas de planificación se configuran del mismo modo, con la excepción del filtro Fecha.

En la primera tabla, el filtro Fecha se fija de Ene (T1/2025) a Dic (T4/2025).

La tabla para 2025 se resalta y muestra el panel Generador para la configuración de la tabla, incluidos los filtros.

En la segunda tabla, el filtro Fecha se fija de Ene (T1/2026) a Dic (T4/2026).

La tabla para 2026 se resalta y muestra el panel Generador para la configuración de la tabla, incluidos los filtros.

1. FOREACH: Cree una acción de datos con un paso de fórmulas avanzadas utilizando la función FOREACH para calcular los costes de mano de obra.

Utilice el siguiente script en el paso de acción de datos de fórmulas avanzadas:

Code Snippet
12345678
MEMBERSET [d/Date] = "202601" To "202612" MEMBERSET [d/Account] = "H121100" FOREACH [d/Date] IF [d/Entity] = "REG0004" THEN DATA() = RESULTLOOKUP([d/Date]=PREVIOUS(12)) * 1.1 ENDIF ENDFOR

Las funciones FOREACH son útiles cuando necesita ejecutar un cálculo para varios miembros de dimensión y el resultado de cada miembro se convierte en la entrada para el siguiente miembro; sin embargo, el script ejecuta primero la función FOREACH, lo que crea cálculos innecesarios.

Editor visual de acción de datos a la izquierda y el script correspondiente a la derecha, utilizando la función FOREACH.

2. Función FOREACH anidada en una declaración IF: cree una segunda acción de datos y actualice el script para utilizar condiciones para reducir el alcance de los bucles FOREACH. Sabe que las sentencias IF le permiten definir filtros para dimensiones específicas. Independientemente del alcance MEMBERSET, estos filtros se aplicarán entre la palabra clave IF y la palabra clave ENDIF correspondiente.

Al utilizar funciones FOREACH y sentencias IF basadas en la misma dimensión, puede anidar la función FOREACHdentro de la sentencia IF, siempre que sea posible, para reducir el número de cálculos en bucle.

Utilice el siguiente script en el paso de acción de datos de fórmulas avanzadas:

Code Snippet
12345678
MEMBERSET [d/Date] = "202601" To "202612" MEMBERSET [d/Account] = "H121100" IF [d/Entity] = "REG0004" THEN FOREACH [d/Date] DATA() = RESULTLOOKUP([d/Date]=PREVIOUS(12)) * 1.1 ENDFOR ENDIF

Al anidar la función FOREACH dentro de la sentencia IF, se acelera el script ejecutando solo el cálculo FOREACH en los datos de la entidad REG0004 –Pacific.

Editor visual de acción de datos a la izquierda y el script correspondiente a la derecha, utilizando la función FOREACH anidada en una sentencia IF.

3. Función DATA(): En la tercera acción de datos, utilice la función quitar FOREACH y solo utilice la función DATA(). La función FOREACH no es necesaria porque el cálculo no depende de sus propios resultados. Este es el script más eficiente para completar la tarea, lo que mejora el rendimiento.

Utilice el siguiente script en el paso de acción de datos de fórmulas avanzadas:

Code Snippet
123456
MEMBERSET [d/Date] = "202601" To "202612" MEMBERSET [d/Account] = "H121100" IF [d/Entity] = "REG0004" THEN DATA() = RESULTLOOKUP([d/Date]=PREVIOUS(12)) * 1.1 ENDIF
Editor visual de acción de datos a la izquierda y el script correspondiente a la derecha, utilizando solo la función DATA().

Escenario 2: Una fórmula avanzada que provoca problemas de rendimiento

A menudo es necesario vincular dos modelos cuando el modelo de origen contiene datos detallados que desea ver en el modelo de destino. Esto se puede hacer en fórmulas de miembros y fórmulas avanzadas, pero veremos un ejemplo utilizando fórmulas avanzadas. Por ejemplo:

  • Vincule su modelo de destino, un modelo de Finanzas, a otros dos modelos de origen, un modelo de Nómina y un modelo de HR. Necesita la cuenta de salarios en PyG del modelo Cálculo de nómina y salarios del modelo HR.
  • Tiene un modelo de determinación de precios que a menudo llaman otros modelos para realizar cálculos de precio*volumen.

Escenario: está calculando los costos de mano de obra, lo que requiere datos de dos modelos, el modelo Gastos y el modelo de RR. HH. Debe ver las tasas de trabajo como parte del cálculo, por lo que tiene una acción de datos que contiene un paso de fórmula avanzada que utiliza la función LINK(). La función Link() se utiliza para copiar o leer datos de un modelo diferente al predeterminado en la acción de datos.

Paso de fórmulas avanzadas en una acción de datos. Se muestran el editor visual y las vistas del editor de scripts.

La fórmula avanzada:

Code Snippet
123
MEMBERSET [d/Date] = (BASEMEMBER([d/Date].[h/YQM], "[2025]")) MEMBERSET [d/P00D_CostCenter] = (BASEMEMBER([d/P00D_CostCenter].[h/H1], %CostCenter%)) DATA([d/Account] = "Labor") = RESULTLOOKUP([d/Account] = "LHours") * LINK([M_HR_Plan], [d/Account] = "LRate", [d/Personnel_Area] = "AMER", [d/Version] = "public.PubHrPlan")

Ahora, desglosemos el cálculo:

  • DATA([d/Account] = "Labor"): Esto configura el cálculo de los costes de mano de obra.
  • RESULTLOOKUP([d/Account] = "LHours"): lee la cantidad de horas de trabajo de M_EXP_PLAN.
  • LINK([M_HR_Plan], [d/Account] = "LRate", [d/Personnel_Area] = "AMER", [d/Version] = "public.PubHrPlan"): Esta función enlaza con el modelo M_HR_Plan y recupera el valor de la cuenta LRate donde la división de personal es AMER y la versión es public.PubHrPlan.
  • Multiplicación: El coste de mano de obra se calcula multiplicando el número de horas de mano de obra por la tasa de mano de obra.

O simplemente ENLACE (Costes de mano de obra = Horas de mano de obra * Tasa de mano de obra). Los costes salariales (escritos en el modelo M_HR_PLAN) son iguales a las horas de trabajo, leídos del M_EXP_PLAN, multiplicados por la tasa de mano de obra, leídos del modelo M_HR_PLAN en tiempo de ejecución utilizando la funcionalidad Link().

Tiene problemas de rendimiento en la historia. Si observa la fórmula, puede ver que cuando accede a los datos de una cuenta vinculada a otro modelo, ambos modelos se consultan al mismo tiempo para realizar el cálculo. Esto significa que la cantidad de datos que se deben procesar es mucho mayor, lo que afecta al rendimiento del sistema.

Optimización: Utilice una acción de datos con un paso de copia válida para todos los modelos y combinada con un paso de fórmulas avanzadas para completar el cálculo en lugar de utilizar enlaces dinámicos entre modelos (es decir, LINK()función). Este enfoque es especialmente efectivo cuando el proceso de planificación no requiere que ambos modelos se utilicen para la recopilación de datos al mismo tiempo, sino cuando el proceso de planificación es más secuencial con un modelo que se actualiza antes que otro.

Las acciones de datos integradas deben hacer referencia al mismo modelo, por lo que se utiliza una acción de datos con dos pasos en este escenario.

Paso 1 - Copiar tasas de trabajo: En el primer paso de la acción de datos, un paso de copia válida para todos los modelos copia la tasa de mano de obra del modelo HR al modelo Gastos. Tenga en cuenta la sugerencia de rendimiento para cálculos y agregaciones no estándar.

Acción de datos con paso de copia válida para todos los modelos en la pantalla.

Paso 2 - Calcular los costos de mano de obra: En el segundo paso de la acción de datos, una fórmula avanzada calcula los costos de mano de obra y los escribe en el modelo Gastos.

Paso Acción de datos con fórmulas avanzadas en la pantalla (editor visual en la parte superior, editor de scripts en la parte inferior).

La fórmula avanzada:

Code Snippet
123
MEMBERSET[d/Date]="202501" To "202512" MEMBERSET[d/Measures]="SignedData" DATA([d/Account]="Labor")=RESULTLOOKUP([d/Account]="LHours")* RESULTLOOKUP([d/Account]="LRate")

Ahora, desglosemos el cálculo:

  • DATA([d/Account] = "Labor"): Esto configura el cálculo de los costes de mano de obra.
  • RESULTLOOKUP([d/Account] = "LHours"): esto lee el número de horas de mano de obra.
  • RESULTLOOKUP([d/Account] = "LRate"): esto lee la tasa de mano de obra.
  • Multiplicación: El coste de mano de obra se calcula multiplicando el número de horas de mano de obra por la tasa de mano de obra.

Al copiar primero las tasas de mano de obra del modelo HR al modelo Gastos, la fórmula avanzada realiza una RESULTSLOOKUP más simple del valor, lo que da como resultado una cantidad más pequeña de datos que se deben procesar, lo que reduce el impacto en el sistema y mejora el rendimiento.

Resumen

Los scripts de fórmulas avanzadas se pueden utilizar para definir y diseñar escenarios empresariales complicados en las historias de planificación de SAP Analytics Cloud. Al igual que al añadir scripts para ampliar widgets, a menudo se puede utilizar una variedad de scripts diferentes para lograr el mismo resultado. Como tal, en esta lección nos centramos en un escenario en el que se utilizaron tres fórmulas diferentes en la misma historia para calcular los valores de trabajo plan, destacando la importancia de optimizar los scripts que se utilizan. Si utiliza fórmulas avanzadas y los usuarios están experimentando problemas de rendimiento, vale la pena investigar los scripts de fórmulas avanzadas para ver si se pueden optimizar.

Puede encontrar más estrategias para crear fórmulas avanzadas optimizadas en el artículo de SAP Help Portal Optimizar fórmulas avanzadas para un mejor rendimiento. Incluye instrucciones sobre cómo:

  • Reduzca el número de funciones FOREACH y limite su alcance tanto como sea posible.
  • Elimine las sentencias IF innecesarias y organice las sentencias IF para reducir el alcance del cálculo.
  • Reduzca el número de funciones RESULTLOOKUP utilizadas en un cálculo individual.
  • Evite utilizar la comparación "= NULL", si es posible.
  • Reduzca el número de funciones DATA.
  • Utilice funciones de agregación de dimensiones siempre que sea posible.