Uso de matrices en un script para ampliar una historia

Objective

After completing this lesson, you will be able to utilice matrices para realizar un bucle del conjunto de resultados.

Iteración de conjunto de resultados

Visualización de un conjunto de resultados

Antes de utilizar el conjunto de resultados en el script, debemos asegurarnos de comprender los elementos del conjunto de resultados.

  • La cabecera de dimensión contiene nombres de dimensión.
  • En Cabecera de columna y Cabecera de fila, encontrará miembros que normalmente forman un árbol. La combinación de todos los miembros de un eje se denomina tupla de eje.
  • En el punto de cruce de una tupla de eje de fila y columna, encontrará una celda de datos en el área Datos.

Puede combinar las dos tuplas de filas y columnas en una tupla más grande con el mismo efecto: seleccione una sola celda de datos. Una selección de "tupla grande" como esta también sobrevive a algunos cambios, por ejemplo, si una dimensión se mueve de filas a columnas o si se intercambian ejes.

Se utiliza un enfoque de "tupla individual" en el diseño de historias para seleccionar celdas de datos.

Una tabla dividida en cuatro, que corresponde a la lista anterior. Arriba a la izquierda: Encabezado de dimensión (púrpura). Arriba a la derecha: Cabecera de columna (naranja) Inferior izquierda: Cabecera de fila (verde). Abajo a la derecha: Datos (amarillo).

Referencia de una celda de datos individual

Puede hacer referencia a una celda de datos individual con la función getData({selection}) de una fuente de datos. Para especificar la celda, pase una selección a la función. La selección se escribe en el formato JSON común.

Para cada celda, puede obtener uno de los siguientes valores:

  • Valor con formato, por ejemplo, 10.803.914,00
  • Valor sin procesar, por ejemplo, 10803914
Referencia de una celda de datos individual. Ejemplo resaltado en rojo en la tabla con la selección resaltada en rojo debajo.

Lectura de un conjunto de selecciones

Si debe trabajar con más de una celda de datos individual, puede trabajar con selecciones. Por ejemplo, puede leer un conjunto de selecciones en una matriz y, a continuación, para generar la visualización deseada, realizar un loop sobre la matriz.

Lectura de un conjunto de selecciones. Tabla con ejemplo resaltado con los detalles que se muestran debajo.

Lectura de un valor de celda de una selección

Paso 1: Lea las selecciones deseadas en una matriz.

Paso 2: Bucle sobre la matriz y utilice una función. Por ejemplo, utilice la función getData({selection}) para visualizar/reaccionar a los valores de datos.

El código del bloque de códigos anterior. Con Selecciones (amarillo) y celda (verde) resaltadas. Los resultados se muestran en la parte inferior de la imagen.

Este es el código utilizado en el ejemplo anterior:

Code Snippet
1234567891011
var selections = Table_1.getDataSource().getDataSelections({ [Alias.MeasureDimension]:"00O2SOEHXWHF3AU4LBEW8WZSX", "0D_NW_BP__0D_NW_CNTRY":"US" }); console.log(selections); for (var x=0; x<selections.length; x++ ){ var cell = Table_1.getDataSource().getData(selections[x]); console.log(cell.formattedValue); }

Lectura de un miembro de dimensión desde una selección

Es posible que trabajar solo con los valores no sea suficiente porque los usuarios desean conocer el elemento al que pertenecen los valores.

Puede hacerlo con la función getResultMember(dimension, {selection}), como se muestra en la siguiente figura.

El código del bloque de códigos a continuación. Con Selecciones (amarillo) y celda (verde), año (azul) y país (azul) resaltados. Los resultados se muestran en la parte inferior de la imagen.

Este es el código utilizado en el ejemplo anterior:

Code Snippet
123456789101112
var selections = Table_1.getDataSource().getDataSelections({ [Alias.MeasureDimension]:"00O2SOEHXWHF3AU4LBEW8WZSX", "0D_NW_BP__0D_NW_CNTRY":"US" }); console.log(selections); for (var x=0; x<selections.length; x++ ){ var cell = Table_1.getDataSource().getData(selections[x]); var year = Table_1.getDataSource().getResultMember("0CALYEAR", selections[x]); var country = Table_1.getDataSource().getResultMember("0D_NW_BP__0D_NW_CNTRY", selections[x]); console.log(country.description + " / " + year.description + " / " + cell.formattedValue);}

Lectura del conjunto de resultados completo

Como alternativa a lo que se muestra hasta ahora, puede leer la totalidad (o partes) del conjunto de resultados en una matriz a la vez. Para cada celda, obtendrá una lista completa de propiedades a las que puede hacer referencia en el procesamiento de scripts posterior.

Por ejemplo:

Code Snippet
123
var resultset = Table_1.getDataSource().getResultSet(); console.log(resultset);
Leyendo el conjunto de resultados completo. La selección en la tabla se resalta con los detalles que se muestran en la parte inferior de la imagen.

Para leer el valor del ejemplo anterior, utilice:

Code Snippet
123
console.log(resultset[0][Alias.MeasureDimension].formattedValue);

La sintaxis para el getResultSet ofrece tres parámetros opcionales. Si no especifica ninguno de estos parámetros, recupera todo el conjunto de resultados disponible.

Code Snippet
1
Table_1.getDataSource().getResultSet(selection?, offset?, limit?: integer)

  • selection Se puede utilizar para restringir el conjunto de resultados devuelto, por ejemplo, a un indicador o miembro de dimensión.
  • offset Omite las celdas de offset antes de empezar a devolver las celdas.
  • limit Limita el número de celdas devueltas.

Alias de scripting

El entorno de scripting ofrece un objeto Alias que se puede utilizar para hacer referencia a diferentes objetos estándar. Los objetos disponibles son los siguientes:

  • Alias.DefaultTheme
  • Alias.FlatHierarchy
  • Alias.MeasureDimension
  • Alias.NullMember
  • Alias.TotalsMember

Para hacer referencia al miembro del resultado en el script, puede utilizar el alias Alias.TotalsMember.

Ejemplo de código que utiliza Alias.TotalsMember.

Para hacer referencia a la dimensión de indicador en el script, puede utilizar el alias Alias.MeasureDimension.

Ejemplo de código que utiliza Alias.MeasureDimension.

Loop del conjunto de resultados

Escenario empresarial: su equipo solicita añadir una tabla de líderes a la historia. Quieren mostrar visualmente los tres países principales y los países restantes en una tabla debajo de la imagen. Desean que todos los datos visualizados se actualicen automáticamente en cuanto cambien los datos, por ejemplo, mientras un usuario selecciona un año.

La historia que utilizará ya se ha creado con widgets de visualización y algunos de los scripts necesarios, ya que en este ejercicio solo escribirá una función de script para realizar un loop sobre el conjunto de resultados y actualizar todos los campos de texto como corresponda. Esta función es necesaria siempre que los valores deban mantenerse actualizados.

Este vídeo le guiará a través de la historia final y el scripting necesario.

Simular los pasos

El siguiente ejercicio de práctica simula estar en modo avanzado en SAP Analytics Cloud y le guía a través del uso de matrices para realizar un bucle del conjunto de resultados como se muestra en el vídeo de demostración.

Flujo de tareas: en este ejercicio práctico, podrá:

  • Añadir scripting a la página y a la tabla para que los widgets de texto se actualicen cuando se abra la historia o cuando cambien los resultados de la tabla
  • Desarrollar el guión para visualizar la junta directiva
  • Ampliar la función de script para visualizar la vista tabular
  • Pruebe su historia en modo de visualización