?>
Die Aktion `aggregate` im Aktionssatz `aggregation` ist ein leistungsstarkes Werkzeug zur Durchführung von Datenaggregationen in SAS Viya. Sie ermöglicht es Benutzern, die Werte einer oder mehrerer Variablen basierend auf verschiedenen Kriterien zusammenzufassen. Diese Aktion ist besonders nützlich für die Datenvorverarbeitung, das Feature-Engineering und die Erstellung von zusammenfassenden Berichten. Sie kann einfache Aggregationen wie Mittelwert, Summe oder Anzahl berechnen, aber auch komplexere Operationen wie die Berechnung von Quantilen, Modus oder das Zusammenfassen von Daten über Zeitintervalle oder rollierende Fenster durchführen. Die Flexibilität der Aktion wird durch eine Vielzahl von Parametern gewährleistet, die eine feinkörnige Steuerung des Aggregationsprozesses ermöglichen, einschließlich der Gruppierung nach Variablen, der Handhabung fehlender Werte und der Formatierung der Ausgabe.
| Parameter | Beschreibung |
|---|---|
| align | Gibt die Ausrichtung des repräsentativen Wertes in Bezug auf ein Intervall oder einen Bin an. |
| bin | Gibt die Minimal- und Maximalwerte eines Bins an. |
| casOut | Gibt die Einstellungen für eine Ausgabetabelle an. |
| contribute | Wenn der Parameter doESP auf True gesetzt ist, können Sie eine Variable angeben, deren Werte innerhalb jedes Aggregationsintervalls aufgezeichnet werden. |
| contributeColumnLabel | Gibt einen Wert an, um das Variablenlabel der contribute-Variable zu überschreiben. |
| contributeColumnName | Gibt einen Wert an, um den Variablennamen der contribute-Variable zu überschreiben. |
| contributeDelimiter | Gibt ein Trennzeichen an, das zwischen verketteten Werten der contribute-Variable verwendet wird. |
| contributeTrim | Wenn auf True gesetzt, werden führende und nachfolgende Leerzeichen vom formatierten Wert der contribute-Variable entfernt. |
| contributeUnroll | Wenn auf True gesetzt, fügt jeder Rohwert aus der contribute-Variable eine Zeile zur Ergebnistabelle hinzu. |
| copyVars | Gibt die Variablen an, die von der Eingabetabelle in die Ausgabetabelle kopiert werden sollen. |
| doESP | Wenn auf True gesetzt, kann die Aktion die Partitionierung und Sortierung der Eingabetabelle nutzen. |
| edgeId | Gibt eine numerische Variable an, deren Werte zur Sortierung der Werte jeder varSpecs-Spezifikation verwendet werden, die die Aggregatoren FIRST, LAST, FNE oder LNE verwendet. |
| exclnpwgt | Wenn auf True gesetzt und eine Gewichtungsvariable angegeben ist, werden Beobachtungen mit einem nicht-positiven Gewichtungswert von der Analyse ausgeschlossen. |
| excludeSelf | Wenn auf True gesetzt und der doESP-Parameter True ist, schließt die Aggregation den Beitrag der aktuellen Beobachtung aus. |
| freq | Gibt eine numerische Variable an, deren Werte als Häufigkeit der Analysevariablenwerte verwendet werden. |
| freqStrict | Bezieht sich auf die Verwendung des MODE-Aggregators. Standardmäßig werden Beobachtungen mit fehlenden oder kleineren als 1 Häufigkeitswerten ausgeschlossen. Wenn auf False gesetzt, werden negative und Dezimalwerte verwendet. |
| groupByLimit | Gibt die maximale Anzahl von Ebenen in einem Group-by-Satz an. |
| groupedIntervalOutput | Wenn auf True gesetzt, wird nur eines der gleichen aggregierten Intervalle in Bezug auf den letzten Id-Wert gespeichert. |
| id | Gibt eine numerische Variable an, die den Zeitstempel identifiziert, der mit jeder Beobachtung in der Eingabetabelle verknüpft ist. |
| idEnd | Gibt den inklusiven Maximalwert der ID-Variable an, der in der Analyse berücksichtigt werden soll. |
| idOutputName | Gibt den neuen Namen der ID-Variable in der Ausgabetabelle an. |
| idRange | Gibt die inklusiven Minimal- und Maximalwerte der ID-Variable an, die in der Analyse berücksichtigt werden sollen. |
| idStart | Gibt den inklusiven Minimalwert der ID-Variable an, der in der Analyse berücksichtigt werden soll. |
| includeEmptyInterval | Standardmäßig werden Intervalle mit einem fehlenden Wert für die ID-Variable in die Ausgabe einbezogen. Wenn auf False gesetzt, werden diese Intervalle ausgeschlossen. |
| includeMissing | Standardmäßig werden fehlende Werte in die Analyse einbezogen. Wenn auf False gesetzt, werden Beobachtungen mit fehlenden Werten ausgeschlossen. |
| inputs | Gibt die Eingabevariablen an, die in der Analyse verwendet werden sollen. |
| interval | Gibt den Zeitraum für die Akkumulation von Beobachtungen an. |
| jumpingWindow | Wenn auf True gesetzt, erfolgt die Aggregation über ein Zeitfenster, das mehrere Intervalle enthalten kann, und die Aggregation wird zurückgesetzt, wenn der angegebene Zeitbereich abläuft. |
| keepRecord | Wenn auf True gesetzt, wird der ursprüngliche Wert jeder Beobachtung für die ID-Variable ohne Intervallausrichtung beibehalten. |
| keepRecordId | Wenn auf True gesetzt und der doESP-Parameter True ist, wird der ursprüngliche ID-Wert jeder Beobachtung ohne Intervallausrichtung beibehalten. |
| modeSingle | Bezieht sich auf die Verwendung des MODE-Aggregators. Wenn auf True gesetzt, wird der kleinste der distinkten Werte als häufigster Wert zurückgegeben, falls alle distinkten Werte eine Häufigkeit von 1 haben. |
| offset | Gibt den Versatz jedes Intervalls an. |
| partKey | Wenn die Tabelle partitioniert ist, können Sie einen Partitionsschlüssel angeben, damit die Ergebnisse nur für diese Partition berechnet werden. |
| pctlDef | Gibt an, wie Quantilstatistiken (Perzentile) berechnet werden. |
| pti | Gibt den Zeitwert an, zu dem die Aggregation innerhalb eines Intervalls oder Bins beendet wird. |
| ptw | Gibt das Unterintervall in Bezug auf jedes Fensterintervall an. |
| raw | Wenn auf True gesetzt, werden Rohwerte der Variablen im input-Parameter verwendet. |
| saveGroupbyFormat | Standardmäßig werden die formatierten Werte der groupBy-Variablen aus der Eingabetabelle in die Ergebnisse kopiert. Wenn auf False gesetzt, werden sie nicht kopiert. |
| saveGroupbyRaw | Standardmäßig werden die Rohwerte der groupBy-Variablen aus der Eingabetabelle in die Ergebnisse kopiert. Wenn auf False gesetzt, werden sie nicht kopiert. |
| saveVariableColumn | Standardmäßig wird der Variablenname für jede Analysevariable in die Ergebnisse aufgenommen. Wenn auf False gesetzt, wird diese Spalte nicht aufgenommen. |
| saveVariableSpecification | Standardmäßig enthalten die Ergebnisse eine Spalte 'Variable Specification'. Wenn auf False gesetzt, wird diese Spalte nicht aufgenommen. |
| subBinOffset | Gibt einen Versatz vom Anfang eines Bins an. |
| subBinWidth | Gibt die Breite des Unter-Bins innerhalb eines Bins an. |
| subInterval | Gibt ein kleineres Intervall an, um die Ausrichtung des Zeitraums innerhalb jedes Intervalls für die Aggregation von Beobachtungen zu steuern. |
| table | Gibt den Namen der Tabelle, die Caslib und andere allgemeine Parameter an. |
| varSpecs | Gibt die zu aggregierende Variable und die Einstellungen für den Aggregator an. |
| weight | Gibt eine numerische Variable an, deren Werte als Gewichtung der numerischen Analysevariablenwerte verwendet werden, wenn der Aggregator SUMMARY ist. |
| windowBin | Gibt die Minimal- und Maximalwerte eines Fenster-Bins an. |
| windowInt | Gibt das Zeitfenster für die Akkumulation von Beobachtungen in Bezug auf jedes Zeitintervall an. |
| windowOffset | Gibt den Versatz jedes Fensterintervalls an. |
| windowSubBinOffset | Gibt den Startpunkt innerhalb eines Fenster-Bins an, an dem die Aggregation von Datensatzwerten beginnt. |
| windowSubBinWidth | Gibt die Breite des Unter-Bins innerhalb jedes windowBin an. |
| windowSubInt | Ähnlich wie subInterval, gibt ein kleineres Intervall zur Steuerung der Ausrichtung des Unterzeitraums innerhalb jedes Fensterintervalls an. |
Dieser Code erstellt eine CAS-Tabelle namens 'my_table', die für die folgenden Beispiele verwendet wird. Sie enthält Informationen über Produkte, Verkaufsdaten und Mengen.
data mycas.my_table; informat date DATE9.; format date DATE9.; input product $ date date9. quantity; datalines; ProductA 01JAN2023 10 ProductB 01JAN2023 20 ProductA 02JAN2023 15 ProductC 02JAN2023 30 ProductB 03JAN2023 25 ProductA 03JAN2023 12 ; run;
Dieses Beispiel zeigt, wie man grundlegende zusammenfassende Statistiken für eine einzelne numerische Spalte ('quantity') in der Tabelle 'my_table' berechnet.
| 1 | PROC CAS; |
| 2 | aggregation.aggregate / |
| 3 | TABLE={name='my_table'}, |
| 4 | varSpecs={{name='quantity'}} |
| 5 | ; |
| 6 | RUN; |
Dieses Beispiel aggregiert die 'quantity'-Spalte, gruppiert aber die Ergebnisse nach der 'product'-Spalte. Anstatt aller zusammenfassenden Statistiken werden nur die Anzahl der Beobachtungen (N), die Summe (SUM) und der Mittelwert (MEAN) für jedes Produkt berechnet.
| 1 | PROC CAS; |
| 2 | aggregation.aggregate / |
| 3 | TABLE={name='my_table', groupBy={'product'}}, |
| 4 | varSpecs={{name='quantity', agg='SUMMARY', summarySubset={'N', 'SUM', 'MEAN'}}} |
| 5 | ; |
| 6 | RUN; |
Dieses Beispiel zeigt, wie man Daten über Zeitintervalle aggregiert. Es verwendet die 'date'-Spalte als ID-Variable und aggregiert die 'quantity'-Daten täglich ('DAY'). Dies ist nützlich, um Zeitreihenanalysen durchzuführen.
| 1 | PROC CAS; |
| 2 | aggregation.aggregate / |
| 3 | TABLE={name='my_table', groupBy={'date'}}, |
| 4 | id='date', |
| 5 | interval='DAY', |
| 6 | varSpecs={{name='quantity', agg='SUM'}} |
| 7 | ; |
| 8 | RUN; |
Dieses Beispiel führt eine rollierende Aggregation durch. Es berechnet die Summe der 'quantity' über ein rollierendes 2-Tage-Fenster. Der Parameter 'doESP' wird verwendet, um die Verarbeitung zu optimieren, indem die Daten nach Datum sortiert werden.
| 1 | PROC CAS; |
| 2 | aggregation.aggregate / |
| 3 | TABLE={name='my_table', groupBy={'date'}, orderBy={'date'}}, |
| 4 | id='date', |
| 5 | interval='DAY', |
| 6 | windowInt='DAY2', |
| 7 | doESP=true, |
| 8 | varSpecs={{name='quantity', agg='SUM'}} |
| 9 | ; |
| 10 | RUN; |
Ein Einzelhandelsunternehmen möchte die monatliche Verkaufsleistung für verschiedene Produktkategorien in mehreren Regionen analysieren. Ziel ist es, den Gesamtumsatz, den durch...
Ein Industrieunternehmen überwacht Maschinen mit IoT-Sensoren, die minütlich Temperaturdaten senden. Aufgrund von Netzwerkproblemen gehen einige Messwerte verloren. Das Ziel ist...
Eine Finanzinstitution muss zur Betrugserkennung in Echtzeit ein rollierendes 30-Minuten-Fenster der Transaktionssummen für jeden Kunden berechnen. Eine plötzliche hohe Summe ka...