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 prueba> <WHILE prueba> <FIRST|NEXT rango|NEXT rango>
comando
<...n>
<ELSE IF prueba>
comando
<...n>
<ELSE>
comando
<...n>
END
Nota
Algunos comandos de Analytics no se pueden usar con el comando GROUP. Si desea 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:
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 Cantidad MINIMUM 0 MAXIMUM 100 INTERVALS 10
CLASSIFY ON Ubicación SUBTOTAL Cantidad
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 Clase_producto < "05"
COUNT
HISTOGRAM ON Cantidad MINIMUM 0 MAXIMUM 100 INTERVALS 10
CLASSIFY ON Ubicación SUBTOTAL Cantidad
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 Clase_producto < "05"
COUNT
HISTOGRAM ON Cantidad MINIMUM 0 MAXIMUM 100 INTERVALS 10
CLASSIFY ON Ubicación SUBTOTAL Cantidad
ELSE
TOTAL Cantidad
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 Clase_producto < "05"
COUNT
HISTOGRAM ON Cantidad MINIMUM 0 MAXIMUM 100 INTERVALS 10
CLASSIFY ON Ubicación SUBTOTAL Cantidad
ELSE IF Clase_producto = "05"
TOTAL Cantidad
ELSE IF Clase_producto = "06"
TOTAL Cantidad
ELSE IF Clase_producto = "07"
TOTAL Cantidad
ELSE
TOTAL Cantidad
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é registro. 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 Clase_producto < "05"
COUNT
STRATIFY ON Cantidad SUBTOTAL Cantidad MIN 0 MAX 100 INT 10
GROUP IF Cantidad > 0
STATISTICS ON Cantidad
HISTOGRAM ON Cantidad
END
ELSE
TOTAL Cantidad
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 las puede usar en comandos posteriores después del GROUP:
- TOTAL2 la suma del campo Importe para la clase de producto 03
- TOTAL3 la suma del campo Importe para la clase de producto 05
- TOTAL4 la suma del campo Importe para la clase de producto 08
- TOTAL5 la 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 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 | COMMENT | COUNT |
CROSSTAB | DUPLICATES | EXPORT |
EXTRACT | GAPS | GROUP |
HISTOGRAM | JOIN | LIST |
LOOP | MERGE | PROFILE |
REPORT | SEQUENCE | STATISTICS |
STRATIFY | SUMMARIZE | TOTAL |
VERIFY |
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 pueden 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_prueba = "hola"
GROUP
ASSIGN v_prueba2 = "%v_prueba% mundo"
COMMENT esto no sería válido: v_prueba3 = "%v_prueba2% nuevamente"
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 de 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 Descuento IF Prioridad_orden = "Baja"
ASSIGN v_var = "prueba"
TOTAL Descuento IF Prioridad_orden = "Alta"
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.