1. Inicio
  2. Administradores
  3. Fórmulas
  4. Funciones JavaScript
  5. Función categoryAgg – Buscar cualquier dato desde una fórmula

Función categoryAgg – Buscar cualquier dato desde una fórmula

Esta función permite, desde una fórmula, obtener una cadena de texto utilizando los datos de uno o varios documentos de cualquier categoría Docuo. No es necesario que la categoría indicada esté relacionada con la que contiene la fórmula.

La función categoryAgg sólo está disponible en Docuo Enterprise.

Por ejemplo, si disponemos de una categoría de países (PAI – País) y queremos listarlos desde cualquier fórmula, deberemos usar esta función:

Document.categoryAgg(Categoría, Campos, Separador, Orden, [Condición], [Top], [Agrupación])

Donde:

Categoría: es el código, el nombre o el código – nombre de la categoría de la cual queremos extraer los datos:

'PAI'

Campos: es la cadena de texto entre comillas con las etiquetas de los campos que queremos extraer de cada documento. Se pueden combinar con texto fijo como vemos en el ejemplo:

'Nombre: <@PAI:Propiedades:Nombre>, Continente: <@PAI:Datos:Continente>, Habitantes: <@PAI:Datos:Habitantes>'

Separador: es una cadena de texto entre comillas que separara los datos de cada documento. Puede incluir \n para salto de línea o \t para tabuladores. Por ejemplo:

'\n'

Orden: es una cadena de texto de ordenación. Indica sobre qué campo o campos queremos ordenar los resultados. La sintaxis debe incluir el nombre de uno o más campos separados por comas. Detrás de cada uno de ellos podremos especificar la cláusula ASC o DESC para indicar el orden. Por ejemplo:

'<@PAI:Datos:Habitantes> DESC, <@PAI:Propiedades:Nombre> ASC'

Condición: es un parámetro opcional con una cadena de texto de condición T-SQL del mismo tipo que se utiliza en las listas desplegables. Nos permite filtrar los resultados del agregado. Por ejemplo, para filtrar Países  de Europa o Asia:

"<@PAI:Datos:Continente> = 'Europa' OR <@PAI:Datos:Continente> = 'Asia'"

Top: es un parámetro opcional con un número que indica el número máximo de registros a retornar.

Agrupación: es un parámetro opcional que indica el campo por el que se quiere agrupar. Cuando se utilizan agrupaciones es posible indicar las funciones de agregado:

  • COUNT(*) para retornar el numero de elementos
  • SUM(campo) para obtener la suma de campos númericos y moneda
  • AVG(campo) para obtener la suma de campos númericos y moneda
  • MAX(campo) para obtener el valor máximo del campo
  • MIN(campo) para obtener el valor mínimo del campo

Es importante saber que cuando se utilizan agrupadores solo se pueden usar en el parámetro Orden campos que ya están incluidos en el parámetro Campos.

Finalmente, la fórmula final (sin agrupaciones) quedaría como:

Document.categoryAgg('PAI', 'Nombre: <@PAI:Propiedades:Nombre>, Continente: <@PAI:Datos:Continente>, Habitantes: <@PAI:Datos:Habitantes>', '\n', '<@PAI:Datos:Habitantes> DESC, <@PAI:Propiedades:Nombre> ASC', "<@PAI:Datos:Continente> = 'Europa' OR <@PAI:Datos:Continente> = 'Asia'", 7)

Obtendríamos una cadena de texto con los datos especificados de los países que sean de Asia o de Europa, hasta un máximo de 7, ordenados por habitantes en descendente y separados por un salto de línea:

Nombre: China, Continente: Asia, Habitantes: 1.403.500.365
Nombre: India, Continente: Asia, Habitantes: 1.398.496.000
Nombre: Indonesia, Continente: Asia, Habitantes: 269.856.000
Nombre: Pakistán, Continente: Asia, Habitantes: 222.017.000
Nombre: Bangladés, Continente: Asia, Habitantes: 179.904.000
Nombre: Rusia, Continente: Europa, Habitantes: 146.710.000
Nombre: Japón, Continente: Asia, Habitantes: 126.127.000

Una variante con agrupaciones de la misma formula sería:

Document.categoryAgg('PAI', 'Continente: <@PAI:Datos:Continente>, Nº de paises: COUNT(*), Habitantes: SUM(<@PAI:Datos:Habitantes>)', '\n', '<@PAI:Datos:Habitantes> DESC, <@PAI:Datos:Continente> ASC', "<@PAI:Datos:Continente> = 'Europa' OR <@PAI:Datos:Continente> = 'Asia'", null, "<@PAI:Datos:Continente>")

Los resultados de número de países por continente con sumatorio de habitantes sería:

Continente: África, N.º de países: 54, Habitantes: 1.440.353.360
Continente: América, N.º de países: 35, Habitantes: 1.046.571.635
Continente: Asia, N.º de países: 48, Habitantes: 4.753.500.631
Continente: Europa, N.º de países: 44, Habitantes: 747.089.798
Continente: Oceanía, N.º de países: 14, Habitantes: 74.915.610

Actualizado el 15 de febrero de 2023
¿Te ha parecido útil este artículo?

Artículos relacionados