Comando GROUP

Ejecuta uno o más comandos de ACLScript en un registro antes de pasar al siguiente registro de la tabla, con solo una pasada a través de la tabla. La ejecución de los comandos se puede controlar por medio de las condiciones.

Sintaxis

GROUP <IF test> <WHILE test> <FIRST range|NEXT range>
  command
  <...n>
<ELSE IF test>
  command
  <...n>
<ELSE>
  command
  <...n>
END

Nota

Algunos comandos de Analytics no se pueden usar con el comando GROUP. Para obtener más información, consulte Comandos que se pueden utilizar dentro del comando GROUP .

Parámetros

Nombre Descripción
IF prueba

opcional

Una expresión condicional que debe ser verdadera para procesar cada registro. El comando se ejecuta únicamente en los registros que cumplen la condición.

Nota

El parámetro IF se evalúa únicamente con los registros que quedan en la tabla después de aplicar los parámetros de alcance (WHILE, FIRST, NEXT).

WHILE prueba

opcional

Una expresión condicional que debe ser verdadera para procesar cada registro. El comando se ejecuta hasta que la condición se evalúa como falsa o hasta que se llega al final de la tabla.

Nota

Si usa WHILE junto con FIRST o NEXT, el procesamiento de registros se detiene al llegar a un límite.

FIRST rango | NEXT rango

opcional

La cantidad de registros que se procesarán:

  • FIRSTComienza a procesar desde el primer registro hasta que se llega al número de registros especificado.
  • NEXTComienza a procesar desde el registro seleccionado actualmente hasta que se llega al número de registros especificado.

Utilice intervalo para especificar la cantidad de registros que se deben procesar.

Si omite FIRST y NEXT, se procesan todos los registros de forma predeterminada.

comando <...n>

Uno o más comandos de ACLScript que se deben ejecutar dentro del GROUP. Para ver una lista completa de los comandos admitidos dentro de GROUP, consulte Comandos que se pueden utilizar dentro del comando GROUP.

Si hay un IF o ELSE IF antes, la prueba se debe evaluar como verdadera.

Si el comando se indica dentro de ELSE, el comando se ejecuta si hay registros que no han sido procesados por ninguno de los comandos precedentes. Puede incluir múltiples comandos, con cada comando comenzando en una línea separada.

ELSE IF prueba

opcional

Abre un bloque ELSE IF para el comando GROUP. La condición somete a prueba registros que no coincidieron con la prueba del comando GROUP o cualquier prueba ELSE IF previa.

Puede incluir múltiples pruebas ELSE IF y estas se evalúan de arriba hacia abajo, hasta que el registro se evalúe como verdadero y los comandos que siguen a esa instrucción ELSE IF se ejecuten.

ELSE

opcional

Abre un bloque ELSE para el comando GROUP. Los comandos que siguen se ejecutan para los registros que se evaluaron como falsos en todas las pruebas anteriores.

END El final del comando GROUP.

Ejemplos

GROUP simple

Los grupos simples comienzan con un comando GROUP, siguen con una serie de comandos y terminan con un comando END:

GROUP
  COUNT
  HISTOGRAM ON Quantity MINIMUM 0 MAXIMUM 100 INTERVALS 10
  CLASSIFY ON Location SUBTOTAL Quantity
END

GROUP IF

Los grupos condicionales ejecutan comandos basados en una condición verdadera o falsa. El siguiente comando GROUP se ejecuta solamente en registros con un valor de Clase_producto menor que 5:

GROUP IF Product_class < "05"
  COUNT
  HISTOGRAM ON Quantity MINIMUM 0 MAXIMUM 100 INTERVALS 10
  CLASSIFY ON Location SUBTOTAL Quantity
END

GROUP IF ...ELSE

Los registros que no cumplen la condición de la prueba son ignorados, a menos que usted incluya el bloque ELSE.

Cualquier número de comandos puede seguir una instrucción ELSE. En el siguiente ejemplo, todos los registros que no cumplen con la condición se procesan totalizando su campo Cantidad:

GROUP IF Product_class < "05"
  COUNT
  HISTOGRAM ON Quantity MINIMUM 0 MAXIMUM 100 INTERVALS 10
  CLASSIFY ON Location SUBTOTAL Quantity
ELSE
  TOTAL Quantity
END

GROUP IF...ELSE IF...ELSE

Puede incluir varios bloques ELSE IF en un grupo, siempre que cada bloque ELSE IF contenga una prueba diferente. En el siguiente ejemplo, los bloques ELSE IF y el bloque ELSE generan cuatro totales:

GROUP IF Product_class < "05"
  COUNT
  HISTOGRAM ON Quantity MINIMUM 0 MAXIMUM 100 INTERVALS 10
  CLASSIFY ON Location SUBTOTAL Quantity
ELSE IF Product_class = "05"
  TOTAL Quantity
ELSE IF Product_class = "06"
  TOTAL Quantity
ELSE IF Product_class = "07"
  TOTAL Quantity
ELSE
  TOTAL Quantity
END

Comandos GROUP anidados

Los grupos anidados son grupos incluidos dentro de otros grupos. Los grupos anidados proporcionan un poderoso método para controlar qué comandos se ejecutan para qué registros. La mayoría de las aplicaciones no requieren un nivel de funcionalidad tan avanzado, pero se encuentra disponible, si fuera necesario.

Como en otros grupos, utilice el comando END para finalizar un grupo anidado. Analytics inicia el procesamiento de los datos solo después de que todos los comandos de grupo han finalizado:


GROUP IF Product_class < "05"
  COUNT
  STRATIFY ON Quantity SUBTOTAL Quantity MIN 0 MAX 100 INT 10
  GROUP IF Quantity > 0
    STATISTICS ON Quantity
    HISTOGRAM ON Quantity
  END
ELSE
  TOTAL Quantity
END

En este ejemplo, todos los comandos desde COUNT hasta el próximo GROUP inclusive se ejecutan solo si Clase_producto es menor que 05.

Los comandos STATISTICS e HISTOGRAM se ejecutan si Cantidad es mayor que cero. Sin embargo, dado que el segundo comando GROUP está anidado, los comandos STATISTICS e HISTOGRAM se ejecutan solo para aquellos registros que cumplan con las condiciones Clase_producto < "05" y Cantidad > 0.

Generación de variables del sistema dentro de un GROUP

Puede usar GROUP para crear varias variables del sistema para un único comando.

En general, al ejecutar un comando como TOTAL, COUNT o STATISTICS, únicamente se genera una variable del sistema. Cada vez que ejecute el comando, sobrescribe el valor de la última ejecución del comando. Los comandos que se ejecutan dentro de un GROUP crean una variable específica para cada instancia del comando dentro del GROUP.

En este ejemplo, el comando TOTAL calcula la suma del campo Importe para cada clase de producto en la tabla Metaphor_Trans_2002. Cuando se ejecuta el código, se generan las siguientes variables y se pueden usar en comandos posteriores después del GROUP:

  • TOTAL2la suma del campo Importe para la clase de producto 03
  • TOTAL3la suma del campo Importe para la clase de producto 05
  • TOTAL4la suma del campo Importe para la clase de producto 08
  • TOTAL5la suma del campo Importe para la clase de producto 09
OPEN Metaphor_Trans_2002
GROUP
  TOTAL AMOUNT IF PRODCLS = "03"
  TOTAL AMOUNT IF PRODCLS = "05"
  TOTAL AMOUNT IF PRODCLS = "08"
  TOTAL AMOUNT IF PRODCLS = "09"
END
CLOSE Metaphor_Trans_2002

Observaciones

Consejo

Si desea ver un tutorial detallado que cubre los comandos GROUP y LOOP, consulte Agrupación y bucles.

Comandos que se pueden utilizar dentro del comando GROUP

La siguiente tabla enumera los comandos de Analytics que se pueden utilizar dentro del comando GROUP.

Si un comando no aparece a continuación, no es posible usarlo dentro de GROUP.

AGE ASSIGN BENFORD
CLASSIFY COMENTARIO COUNT
CROSSTAB DUPLICATES EXPORTAR
EXTRACT GAPS GRUPO
HISTOGRAM UNIRSE LIST
LOOP MERGE PERFIL
REPORT SEQUENCE STATISTICS
STRATIFY SUMMARIZE TOTAL
VERIFICAR    

Agrupación y bucles

El comando GROUP le permite ejecutar varios comandos en un registro antes de pasar al siguiente registro de la tabla, lo cual reduce significativamente el tiempo de procesamiento.

Puede utilizar el comando LOOP dentro del comando GROUP si necesita ejecutar una serie de comandos más de una vez en un registro.

Uso de variables con GROUP

Variables definidas por el usuario

Para usar una variable dentro del comando GROUP, defina la variable antes de introducir el bloque GROUP.

Nota

Si bien puede inicializar y definir una variable dentro de un bloque GROUP, no es recomendable que lo haga. El uso de variables que se inicializan dentro de un bloque GROUP puede generar resultados inesperados.

Dentro de un GROUP, puede evaluar variables utilizando la sustitución de variables. El valor de la variable permanece igual que al introducir el comando GROUP.

No puede definir una variable dentro de un comando GROUP y luego hacer referencia a ella con la sustitución de variables:

ASSIGN v_test = "hello"
GROUP
  ASSIGN v_test2 = "%v_test% world"
  COMMENT this would be invalid: v_test3 = "%v_test2% again"
END

Variables definidas por el sistema

Algunos comandos, como TOTAL y STATISTICS generan variables del sistema sobre la base de los cálculos que realizan los comandos. Si utiliza un GROUP para ejecutar estos comandos, las variables del sistema que se obtienen se numeran de manera consecutiva, comenzando por el número de línea del comando dentro de GROUP (excluidas las líneas vacías) y llegando hasta n. El valor de n se incrementa en 1 por cada número de línea en GROUP.

Nota

Debe esperar hasta que GROUP finalice antes de usar cualquier variable generada por el sistema creada dentro del GROUP. El comando se debe ejecutar con cada registro de la tabla antes de que la variable esté disponible. Utilice estas variables después de la palabra clave END del GROUP.

En el siguiente ejemplo, el primer comando TOTAL genera la variable TOTAL2 y el segundo genera TOTAL4. Ambas variables están disponibles para ser usadas en comandos posteriores una vez que se completa GROUP:

GROUP
  TOTAL Discount IF Order_Priority = "Low"
  ASSIGN v_var = "test"
  TOTAL Discount IF Order_Priority = "High"
END

Notas sobre la sintaxis

  • La sintaxis de múltiples líneas indicada para el comando GROUP es obligatoria y, por lo tanto, el comando GROUP no se puede ingresar en la línea de comandos.
  • Cada comando GROUP deberá terminar con un comando END.
  • Cuando utilice el comando GROUP en sus scripts, puede mejorar la legibilidad del bloque de comandos al dejar sangría en los comandos indicados dentro del grupo. Sin embargo, no es necesario usar sangría.