Comando GROUP
Executa um ou mais comandos do ACLScript em um registro antes de passar ao próximo registro na tabela, executando apenas uma passagem pela tabela. A execução do comando pode ser controlada por condições.
Sintaxe
GROUP <IF teste> <WHILE teste> <FIRST intervalo|NEXT intervalo> comando <...n> <ELSE IF teste> comando <...n> <ELSE> comando <...n> END
Nota
Alguns comandos do Analytics não podem ser usados com o comando GROUP. Para obter mais informações, consulte Comandos que podem ser usados dentro do comando GROUP.
Parâmetros
Nome | Descrição |
---|---|
IF teste opcional |
Uma expressão condicional que deve ser verdadeira para processar cada registro. O comando é executado apenas nos registros que atendem à condição. Nota O parâmetro IF é avaliado apenas em relação aos registros restantes em uma tabela depois da aplicação dos parâmetros de escopo (WHILE, FIRST, NEXT). |
WHILE teste opcional |
Uma expressão condicional que deve ser verdadeira para processar cada registro. O comando é executado até que a condição seja avaliada como falsa ou o fim da tabela seja alcançado. Nota Se você usar WHILE juntamente com FIRST ou NEXT, o processamento de registros será interrompido assim que um limite for alcançado. |
FIRST intervalo | NEXT intervalo opcional |
O número de registros a ser processado:
Use intervalo para especificar o número de registros a serem processados. Se você omitir FIRST e NEXT, todos os registros serão processados por padrão. |
comando <...n> |
Um ou mais comandos de script do ACL para execução dentro do GROUP. Para obter uma lista completa dos comandos permitidos dentro de GROUP, consulte Comandos que podem ser usados dentro do comando GROUP. Se houver um IF ou ELSE IF anteriores, o teste deverá ser avaliado como verdadeiro. Se o estiver abaixo de ELSE, o comando será executado se houver registros que não foram processados por nenhum dos comandos precedentes. Você pode incluir vários comandos, com cada comando começando em uma linha separada. |
ELSE IF teste opcional |
Abre um block ELSE IF para o comando GROUP. A condição testa os registros que não corresponderam no teste do comando GROUP ou em algum teste ELSE IF anterior. Você pode incluir vários testes ELSE IF, que serão avaliados de cima para baixo, até que o registro seja avaliado como verdadeiro e os comandos após essa instrução ELSE IF sejam executados. |
ELSE opcional |
Abre um bloco ELSE para o comando GROUP. Os comandos seguintes são executados para os registros avaliados como falso em todos os testes anteriores. |
END | O final do comando GROUP. |
Exemplos
GROUP simples
Os grupos simples que iniciam com um comando GROUP são seguidos por uma série de comandos e terminam com um comando END:
GROUP COUNT HISTOGRAM ON Quantidade MINIMUM 0 MAXIMUM 100 INTERVALS 10 CLASSIFY ON Local SUBTOTAL Quantidade END
GROUP IF
Grupos condicionais executam comandos baseados em uma condição verdadeira ou falsa. O comando GROUP a seguir é executado somente em registros com um valor de Classe_produto inferior a 5:
GROUP IF Classe_produto < "05" COUNT HISTOGRAM ON Quantidade MINIMUM 0 MAXIMUM 100 INTERVALS 10 CLASSIFY ON Local SUBTOTAL Quantidade END
GROUP IF ...ELSE
Os registros que não satisfazem a condição do teste são ignorados, a menos que você inclua um bloco ELSE.
Qualquer número de comandos pode seguir uma instrução ELSE. No exemplo a seguir, todos os registros que não atenderem à condição serão processados tendo seus campos Quantidade totalizados:
GROUP IF Classe_produto < "05" COUNT HISTOGRAM ON Quantidade MINIMUM 0 MAXIMUM 100 INTERVALS 10 CLASSIFY ON Local SUBTOTAL Quantidade ELSE TOTAL Quantidade END
GROUP IF...ELSE IF...ELSE
Você pode incluir vários blocos ELSE IF em um grupo, desde que cada bloco ELSE IF contenha um teste diferente. No exemplo a seguir, os blocos ELSE IF e o bloco ELSE produzem quatro totais:
GROUP IF Classe_produto < "05" COUNT HISTOGRAM ON Quantidade MINIMUM 0 MAXIMUM 100 INTERVALS 10 CLASSIFY ON Local SUBTOTAL Quantidade ELSE IF Classe_produto = "05" TOTAL Quantidade ELSE IF Classe_produto = "06" TOTAL Quantidade ELSE IF Classe_produto = "07" TOTAL Quantidade ELSE TOTAL Quantidade END
Comandos GROUP aninhados
Grupos aninhados são grupos incluídos em outros grupos. Os grupos aninhados fornecem uma forma poderosa de controlar quais comandos são executados para quais registros. A maioria das aplicações não necessita deste nível avançado de funcionalidade, mas ele está disponível, se necessário.
Como em outros grupos, use o comando END para encerrar um grupo aninhado. O Analytics somente começa a processar os dados após o término de todos os comandos:
GROUP IF Classe_produto < "05" COUNT STRATIFY ON Quantidade SUBTOTAL Quantidade MIN 0 MAX 100 INT 10 GROUP IF Quantidade> 0 STATISTICS ON Quantidade HISTOGRAM ON Quantidade END ELSE TOTAL Quantidade END
Nesse exemplo, todos os comandos desde COUNT até o próximo GROUP, inclusive, somente serão executados se Classe_produto for menor do que 05.
Os comandos STATISTICS e HISTOGRAM serão executados se Quantidade for maior que zero. Entretanto, quando o segundo comando GROUP é aninhado, os comandos STATISTICS e HISTOGRAM são executados somente para registros que atendam às condições Classe_produto < "05" e Quantidade > 0.
Geração de variáveis do sistema dentro de um GROUP
Você pode usar GROUP para criar diversas variáveis do sistema para um único comando.
Normalmente, ao executar um comando como TOTAL, COUNT ou STATISTICS, apenas uma variável do sistema é gerada. Toda vez que você executa o comando, substitui o valor da última execução do comando. Comandos executados dentro de um GROUP criam uma variável específica para cada instância do comando dentro do GROUP.
Neste exemplo, o comando TOTAL calcula a soma do campo Total para cada classe de produto na tabela Metaphor_Trans_2002. Quando o código é executado, as seguintes variáveis são geradas e podem ser usadas em comandos subsequentes depois de GROUP:
- TOTAL2 a soma do campo Total para a classe de produto 03
- TOTAL3 a soma do campo Total para a classe de produto 05
- TOTAL4 a soma do campo Total para a classe de produto 08
- TOTAL5 a soma do campo Total para a classe de produto 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
Observações
Dica
Para ver um tutorial detalhado cobrindo os comandos GROUP e LOOP, consulte Agrupamento e loops.
Comandos que podem ser usados dentro do comando GROUP
A tabela a seguir lista os comandos do Analytics que podem ser usados dentro do comando GROUP.
Se um comando não estiver listado abaixo, não poderá ser usado 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 |
Agrupamento e loops
O comando GROUP permite que você execute vários comandos em um registro antes de passar ao próximo registro na tabela, o que pode reduzir significativamente o tempo de processamento.
Você pode usar o comando LOOP dentro do comando GROUP se precisar executar uma série de comandos mais de uma vez.
Uso de variáveis com GROUP
Variáveis definidas pelo usuário
Para usar uma variável dentro do comando GROUP, defina a variável antes de inserir o bloco GROUP.
Nota
Embora seja possível inicializar e definir uma variável dentro de um bloco GROUP, não é recomendado fazer isso. As variáveis inicializadas em um GROUP podem causar resultados inesperados quando usadas.
Dentro de um GROUP, é possível avaliar variáveis usando a substituição de variável. O valor da variável continua o mesmo de quando GROUP é inserido.
Você não pode definir uma variável dentro de um GROUP e então indicá-la como referência usando a substituição de variável:
ASSIGN v_teste = "olá" GROUP ASSIGN v_teste2 = "%v_teste% mundo" COMMENT isto seria inválido: v_teste3 = "%v_teste2% novamente" END
Variáveis definidas pelo sistema
Alguns comandos, como TOTAL e STATISTICS, geram variáveis do sistema baseadas em cálculos que os comandos realizam. Se usar GROUP para executar esses comandos, todas as variáveis do sistema resultantes serão numeradas consecutivamente, iniciando no número da linha de comando dentro do GROUP (exceto linhas vazias) e executando para n. O valor de n aumenta em 1 para cada número de linha no GROUP.
Nota
Você precisa aguardar até que GROUP seja concluído antes de usar qualquer variável gerada pelo sistema criada dentro do GROUP. O comando deve ser executado contra cada registro na tabela antes de a variável estar disponível. Use essas variáveis depois de fechar a palavra-chave END do GROUP.
No exemplo a seguir, o primeiro comando TOTAL gera a variável TOTAL2 e o segundo gera TOTAL4. Ambas variáveis estão disponíveis para uso em comandos subsequentes depois da conclusão de GROUP:
GROUP TOTAL Desconto IF Prioridade_Pedido = "Baixa" ASSIGN v_var = "teste" TOTAL Desconto IF Prioridade_Pedido = "Alta" END
Notas de sintaxe
- A sintaxe com várias linhas listada para o comando é obrigatória, e assim o comando GROUP não pode ser inserido na linha de comando.
- Cada comando GROUP deve ser encerrado com um comando END.
- Ao usar o comando GROUP em seus scripts, é possível melhorar a legibilidade do bloco de comando indexando os comandos listados dentro do grupo.