GROUP-Befehl

Führt einen oder mehrere ACLScript-Befehle für einen Datensatz aus, bevor auf den nächsten Datensatz innerhalb der Tabelle übergegangen wird. Die Tabelle wird hierbei nur einmal durchlaufen. Die Befehlsausführung kann durch Bedingungen kontrolliert werden.

Syntax

GROUP <IF Test> <WHILE Test> <FIRST Bereich|NEXT Bereich>
  Befehl
  <...n>
<ELSE IF Test>
  Befehl
  <...n>
<ELSE>
  Befehl
  <...n>
END

Hinweis

Einige Analytics-Befehle können nicht mit dem GROUP-Befehl verwendet werden. Weitere Informationen finden Sie unter Befehle, die innerhalb des GROUP-Befehls verwendet werden können.

Parameter

Name Beschreibung
IF Test

Optional

Ein bedingter Ausdruck, der wahr sein muss, damit ein Datensatz verarbeitet wird. Der Befehl wird nur für Datensätze ausgeführt, welche die Bedingung erfüllen.

Hinweis

Der IF-Parameter wird nur für Datensätze ausgewertet, die nach Anwendung von Bereichsparametern (WHILE, FIRST, NEXT) in einer Tabelle übrig sind.

WHILE Test

Optional

Ein bedingter Ausdruck, der wahr sein muss, damit ein Datensatz verarbeitet wird. Der Befehl wird ausgeführt, bis die Bedingung falsch ist oder das Tabellenende erreicht wurde.

Hinweis

Wenn Sie WHILE zusammen mit FIRST oder NEXT verwenden, endet die Datensatzverarbeitung, sobald eine Grenze erreicht wird.

FIRST Bereich | NEXT Bereich

Optional

Die Anzahl der zu verarbeitenden Datensätze:

  • FIRST Verarbeitung beim ersten Datensatz beginnen, bis die angegebene Datensatzanzahl erreicht wird
  • NEXT Verarbeitung beim aktuell ausgewählten Datensatz beginnen, bis die angegebene Datensatzanzahl erreicht wird

Verwenden Sie Bereich, um die Anzahl der zu verarbeitenden Datensätze anzugeben.

Wenn Sie FIRST und NEXT nicht angeben, werden standardmäßig alle Datensätze verarbeitet.

Befehl <...n>

Ein oder mehr ACLScript-Befehle können innerhalb von GROUP ausgeführt werden. Eine vollständige Liste der innerhalb von GROUP unterstützten Befehle finden Sie unter Befehle, die innerhalb des GROUP-Befehls verwendet werden können.

Wenn es einen vorangehenden IF- oder ELSE-IF-Test gibt, muss dieser als „wahr“ ausgewertet werden.

Für den Fall, dass der Befehl unter ELSE aufgeführt ist, wird der Befehl ausgeführt, wenn Datensätze vorhanden sind, die von keinem der vorangehenden Befehle verarbeitet wurden. Sie können mehrere Befehle einschließen, wobei jeder Befehl in einer eigenen Zeile beginnt.

ELSE IF Test

Optional

Öffnet für den GROUP-Befehl einen ELSE-IF-Block. Die Bedingung überprüft Datensätze, die den GROUP-Befehlstest oder vorherige ELSE-IF-Tests nicht bestanden haben.

Sie können mehrere ELSE-IF-Tests einschließen, die von oben nach unten überprüft werden, bis der Datensatz mit „wahr“ ausgewertet wird und die Befehle, die dieser ELSE-IF-Anweisung folgen, ausgeführt werden.

ELSE

Optional

Öffnet für den GROUP-Befehl einen ELSE-Block. Die nachfolgenden Befehle werden für Datensätze ausgeführt, die bei allen vorherigen Tests mit „falsch“ ausgewertet wurden.

END Das Ende des GROUP-Befehls.

Beispiele

Einfaches GROUP

Einfache Gruppen beginnen mit einem GROUP-Befehl, dem eine Reihe von Befehlen folgen, und enden mit einem END-Befehl:

GROUP
  COUNT
  HISTOGRAM ON Menge MINIMUM 0 MAXIMUM 100 INTERVALS 10
  CLASSIFY ON Ort SUBTOTAL Menge
END

GROUP IF

Gruppen mit Bedingungen führen Befehle aus, die sich auf eine wahre oder unwahre Bedingung beziehen. Der folgende GROUP-Befehl wird nur für Datensätze ausgeführt, die in Produktklasse einen Wert kleiner als 5 aufweisen:

GROUP IF Produktklasse < "05"
  COUNT
  HISTOGRAM ON Menge MINIMUM 0 MAXIMUM 100 INTERVALS 10
  CLASSIFY ON Ort SUBTOTAL Menge
END

GROUP IF ...ELSE

Die Datensätze, welche die Testbedingung nicht erfüllen, werden ignoriert, es sei denn, Sie schließen einen ELSE-Block ein.

Einer ELSE-Anweisung kann eine beliebige Anzahl von Befehlen folgen. Im nächsten Beispiel werden alle Datensätze verarbeitet, die der Bedingung nicht entsprechen, indem ihre Mengenfelder summiert werden:

GROUP IF Produktklasse < "05"
  COUNT
  HISTOGRAM ON Menge MINIMUM 0 MAXIMUM 100 INTERVALS 10
  CLASSIFY ON Ort SUBTOTAL Menge
ELSE
  TOTAL Menge
END

GROUP IF...ELSE IF...ELSE

Sie können mehrere ELSE-IF-Blöcke in einer Gruppe angeben, solange jeder ELSE-IF-Block einen unterschiedlichen Test enthält. Im folgenden Beispiel erzeugen die ELSE-IF-Blöcke und der ELSE-Block vier Summen:

GROUP IF Produktklasse < "05"
  COUNT
  HISTOGRAM ON Menge MINIMUM 0 MAXIMUM 100 INTERVALS 10
  CLASSIFY ON Ort SUBTOTAL Menge
ELSE IF Produktklasse = "05"
  TOTAL Menge
ELSE IF Produktklasse = "06"
  TOTAL Menge
ELSE IF Produktklasse = "07"
  TOTAL Menge
ELSE
  TOTAL Menge
END

Verschachtelte GROUP-Befehle

Verschachtelte Gruppen sind Gruppen, die in anderen Gruppen eingeschlossen sind. Verschachtelte Gruppen sind eine wirksame Möglichkeit, um zu steuern, welche Befehle für welche Datensätze ausgeführt werden. Die meisten Anwendungen erfordern kein derartig fortgeschrittenes Funktionsniveau, aber falls benötigt, steht Ihnen diese Option zur Verfügung.

Wie in anderen Gruppen benutzen Sie den END-Befehl, um eine verschachtelte Gruppe zu beenden. Analytics beginnt die Datenverarbeitung nur nach dem Beenden aller Gruppenbefehle:


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

In diesem Beispiel werden alle Befehle von COUNT bis einschließlich dem nächsten GROUP-Befehl nur dann ausgeführt, wenn die Produktklasse kleiner als 05 ist.

Die Befehle STATISTICS und HISTOGRAM werden ausgeführt, wenn die Menge größer als Null ist. Da jedoch der zweite GROUP-Befehl verschachtelt ist, werden die Befehle STATISTICS und HISTOGRAM nur für Datensätze ausgeführt, welche den Bedingungen Produktklasse < "05" und Menge > "0" entsprechen.

Systemvariablen innerhalb GROUP erstellen

Sie können GROUP verwenden, um mehrere Systemvariablen für einen einzelnen Befehl zu erstellen.

Wenn Sie einen Befehl wie TOTAL, COUNT oder STATISTICS ausführen, wird normalerweise nur eine Systemvariable erstellt. Jedes Mal, wenn Sie den Befehl ausführen, überschreiben Sie den Wert der vorherigen Ausführung des Befehls. Befehle, die innerhalb einer Gruppe ausgeführt werden, erstellen eine spezifische Variable für jede Instanz des Befehls innerhalb von GROUP.

In diesem Beispiel berechnet der Befehl TOTAL die Summe des Felds Betrag für jede Produktklasse innerhalb der Tabelle Metaphor_Trans_2002. Sobald der Quellcode ausgeführt wird, werden die folgenden Variablen erstellt, die in späteren Befehlen nach GROUP verwendet werden können:

  • TOTAL2 die Summe des Felds Betrag für Produktklasse 03
  • TOTAL3 die Summe des Felds Betrag für Produktklasse 05
  • TOTAL4 die Summe des Felds Betrag für Produktklasse 08
  • TOTAL5 die Summe des Felds Betrag für Produktklasse 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

Bemerkungen

Tipp

Ein detailliertes Tutorial für die GROUP- und LOOP-Befehle finden Sie unter Gruppierung und Schleifen.

Befehle, die innerhalb des GROUP-Befehls verwendet werden können

Die folgende Tabelle enthält die Analytics-Befehle, die innerhalb des GROUP-Befehls verwendet werden können.

Wenn ein Befehl in der folgenden Liste fehlt, kann er innerhalb von GROUP nicht verwendet werden.

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    

Gruppierung und Schleifen

Mit dem GROUP-Befehl können Sie mehrere Befehle für einen Datensatz ausführen, bevor zum nächsten Datensatz in der Tabelle gewechselt wird. Dadurch kann die Verarbeitungszeit deutlich verkürzt werden.

Sie können den LOOP-Befehl innerhalb des GROUP-Befehls verwenden, wenn Sie eine Reihe von Befehlen mehrmals für einen Datensatz ausführen müssen.

Einsatz von Variablen mit GROUP

Benutzerdefinierte Variablen

Um eine Variable innerhalb des GROUP-Befehls zu verwenden, definieren Sie die Variable vor dem GROUP-Block.

Hinweis

Sie können eine Variable zwar in einem GROUP-Block initialisieren und definieren, das wird aber nicht empfohlen. In GROUP initialisierte Variablen können bei ihrer Verwendung unerwartete Ergebnisse verursachen.

In einer GROUP können Sie Variablen mit Variablenersatz auswerten. Der Wert der Variablen bleibt mit dem Wert beim Eintritt in GROUP identisch.

Eine Variable können Sie nicht innerhalb von GROUP definieren und dann mit Variablenersatz referenzieren:

ASSIGN v_Test = "Hallo"
GROUP
  ASSIGN v_Test2 = "%v_Test% Welt"
  COMMENT Dies wäre ungültig: v_Test3 = "%v_Test2% noch einmal"
END

Systemdefinierte Variablen

Einige Befehle wie beispielsweise TOTAL und STATISTICS erstellen Systemvariablen auf Basis von Berechnungen der Befehle. Wenn Sie eine Gruppe zur Ausführung dieser Befehle verwenden, werden sich ergebende Systemvariablen fortlaufend nummeriert. Sie beginnen mit der Zeilennummer innerhalb von GROUP (ohne Leerzeilen) und enden mit n. Der Wert von n erhöht sich mit jeder weiteren Zeilennummer in GROUP um 1.

Hinweis

Sie müssen das Ende von GROUP abwarten, bevor Sie innerhalb von GROUP erstellte systemerstellte Variablen verwenden können. Der Befehl muss für jeden Datensatz in der Tabelle ausgeführt werden, bevor die Variable verfügbar ist. Verwenden Sie diese Variablen nach dem abschließenden Schlüsselwort END von GROUP.

Im folgenden Beispiel erstellt der erste TOTAL-Befehl die Variable TOTAL2 und der zweite Befehl TOTAL4. Beide Variablen können in späteren Befehlen verwendet werden, sobald GROUP beendet ist:

GROUP
  TOTAL Rabatt IF Auftragspriorität = "Niedrig"
  ASSIGN v_Var = "Test"
  TOTAL Rabatt IF Auftragspriorität = "Hoch"
END

Syntaxanmerkungen

  • Die für den GROUP-Befehl ausgeführte mehrzeilige Syntax ist erforderlich, sodass der GROUP-Befehl nicht in die Befehlszeile eingegeben werden kann.
  • Jeder GROUP-Befehl muss mit einem END-Befehl abgeschlossen werden.
  • Bei Verwendung des GROUP-Befehls in Skripts können Sie die Lesbarkeit des Befehlsblocks verbessern, indem Sie die in der Gruppe aufgelisteten Befehle einrücken. Sie müssen aber nicht einrücken.