table

addTable

Beschreibung

Fügt eine Tabelle hinzu, indem sie vom Client an den Server gesendet wird. Diese Aktion wird normalerweise nicht direkt aufgerufen, sondern über eine client-spezifische Funktion oder Methode (z. B. `add_table` in Python SWAT oder `as.cas.ctable` in R) genutzt, die den Datentransfer vom Client-Speicher zum CAS-Server kapselt. Sie ist grundlegend für die Erstellung von In-Memory-Tabellen aus lokalen Datenstrukturen wie Pandas DataFrames oder R Data Frames.

table.addTable <result=results> <status=rc> / append=TRUE | FALSE, caslib="string", columnar=TRUE | FALSE, commitRecords=64-bit-integer, commitSeconds=64-bit-integer, compress=TRUE | FALSE, copies=integer, descending={integer-1 <, integer-2, ...>}, label="string", maxMBytes=64-bit-integer, memoryFormat="DVR" | "INHERIT" | "STANDARD", orderBy={"variable-name-1" <, "variable-name-2", ...>}, partition={"variable-name-1" <, "variable-name-2", ...>}, promote=TRUE | FALSE, recLen=integer, repeat=TRUE | FALSE, replace=TRUE | FALSE, table="table-name", vars={{...}};
Einstellungen
ParameterBeschreibung
appendGibt an, ob Zeilen aus der Tabelle zu einer vorhandenen Tabelle hinzugefügt werden sollen.
caslibGibt die Ziel-Caslib für die Tabelle an.
columnarGibt an, ob die In-Memory-Tabelle im spaltenorientierten Format erstellt werden soll.
commitRecordsGibt die Anzahl der Zeilen an, die der Server empfangen soll, bevor die Zeilen in die Tabelle geschrieben werden.
commitSecondsGibt die Anzahl der Sekunden an, die der Server Zeilen empfangen soll, bevor die Zeilen in die Tabelle geschrieben werden.
compressWenn auf True gesetzt, wird die Zieltabelle komprimiert.
copiesGibt die Anzahl der redundanten Kopien für die Zeilen an. Höhere Werte bieten eine größere Fehlertoleranz bei Knotenausfällen, verbrauchen aber mehr Speicher.
descendingGibt an, die Sortierreihenfolge für die angegebenen Variablen umzukehren, sodass die Ergebnisse vom größten zum kleinsten Wert sortiert werden. Sie müssen die Variablennamen im Parameter orderBy angeben.
labelGibt die Beschriftung an, die der Variablen zugeordnet werden soll.
maxMBytesGibt die maximale Menge an physischem Speicher in Megabyte an, die für die Tabelle zugewiesen werden soll. Nach diesem Schwellenwert verwendet der Server temporäre Dateien und Betriebssystemfunktionen zur Speicherverwaltung.
memoryFormatGibt das Speicherformat für die Ausgabetabelle an.
orderByGibt die Variablennamen an, die zur Sortierung der Zeilen innerhalb von Partitionen verwendet werden sollen.
partitionGibt die Variablennamen an, die als Partitionierungsschlüssel verwendet werden sollen. Die Tabelle wird entsprechend den formatierten Werten der angegebenen Variablen partitioniert.
promoteWenn auf True gesetzt, wird die Tabelle mit einem globalen Geltungsbereich hinzugefügt. Dies ermöglicht anderen Sitzungen den Zugriff auf die Tabelle, vorbehaltlich der Zugriffskontrollen. Die Ziel-Caslib muss ebenfalls einen globalen Geltungsbereich haben.
recLenGibt die Länge einer Zeile in Bytes an. Dieser Parameter ist erforderlich.
repeatWenn auf True gesetzt, werden die Zeilen der Tabelle auf jeder Maschine eines verteilten Servers dupliziert. Das Erstellen von Duplikatkopien von Tabellen kann in Fällen wie einer Dimensionstabelle, die in einem Join verwendet wird, nützlich sein.
replaceWenn auf True gesetzt, wird eine vorhandene Tabelle mit demselben Namen überschrieben.
tableGibt den Namen der Ausgabetabelle an.
varsGibt die Attribute für jede Variable an. Dies ist eine Liste von Wörterbüchern, wobei jedes Wörterbuch eine Variable beschreibt.
Erstellung von Beispieldaten

Dieser SAS-Code erstellt eine lokale SAS-Tabelle namens 'CARS_DATA'. Diese Tabelle kann dann mit einer Client-Anwendung wie Python oder R in eine CAS-In-Memory-Tabelle hochgeladen werden, um die Funktionalität der `addTable`-Aktion zu demonstrieren. Beachten Sie, dass `addTable` selbst die Datenübertragung vom Client zum Server durchführt und keine Daten aus einer serverseitigen Quelle liest.

Kopiert!
1DATA CARS_DATA;
2 LENGTH Make $ 8 Model $ 15;
3 INPUT Make Model Year;
4 DATALINES;
5 Ford Mustang 2022
6 Toyota Camry 2023
7 Honda Civic 2023
8 Ford F-150 2021
9 Chevrolet Silverado 2022
10 ;
11RUN;

Beispiele

Dieses Beispiel zeigt den konzeptionellen Aufruf von `addTable` in CASL. In der Praxis wird diese Aktion nicht direkt so verwendet. Stattdessen würde ein Client wie Python die Methode `s.add_table(casout={'name':'CARS'}, table=my_pandas_dataframe)` verwenden, um ein lokales DataFrame in CAS hochzuladen. Der hier gezeigte Code veranschaulicht die Parameter, die der Server bei einem solchen Aufruf intern erhält.

SAS® / CAS-Code Code wartet auf Validierung durch die Community
Kopiert!
1PROC CAS;
2TABLE.addTable /
3 casOut={caslib="CASUSER", name="CARS", replace=true},
4 recLen=31,
5 vars={
6 {name="Make", offset=0, LENGTH=8, rType="CHAR", type="CHAR"},
7 {name="Model", offset=8, LENGTH=15, rType="CHAR", type="CHAR"},
8 {name="Year", offset=23, LENGTH=8, rType="NUMERIC", type="SAS"}
9 };
10RUN;
Ergebnis :
Die Aktion erstellt eine neue In-Memory-Tabelle namens 'CARS' in der 'CASUSER'-Caslib. Die Tabelle hat drei Spalten: 'Make', 'Model' und 'Year'. Der eigentliche Dateninhalt würde vom Client in einem separaten Schritt gesendet werden.

Dieses Beispiel zeigt, wie man eine Tabelle hinzufügt, dabei eine bereits existierende Tabelle gleichen Namens ersetzt (`replace=true`) und sie für alle anderen CAS-Sitzungen verfügbar macht (`promote=true`). Dies ist nützlich, um Referenzdaten global zu teilen. Die Ziel-Caslib ('Public') muss ebenfalls einen globalen Geltungsbereich haben.

SAS® / CAS-Code Code wartet auf Validierung durch die Community
Kopiert!
1PROC CAS;
2TABLE.addTable /
3 casOut={caslib="Public", name="CARS_GLOBAL", replace=true, promote=true},
4 recLen=31,
5 vars={
6 {name="Make", offset=0, LENGTH=8, rType="CHAR", type="CHAR", label="Hersteller"},
7 {name="Model", offset=8, LENGTH=15, rType="CHAR", type="CHAR", label="Modell"},
8 {name="Year", offset=23, LENGTH=8, rType="NUMERIC", type="SAS", label="Jahr", FORMAT="BEST4."}
9 };
10RUN;
Ergebnis :
Eine globale Tabelle namens 'CARS_GLOBAL' wird in der 'Public'-Caslib erstellt oder ersetzt. Sie ist für alle Sitzungen sichtbar und nutzbar. Die Variablen haben Beschriftungen und das Jahr hat ein Format.

Dieses Beispiel zeigt, wie man eine Tabelle hinzufügt, die nach der Spalte 'Make' partitioniert ist. Innerhalb jeder Partition werden die Daten absteigend nach 'Year' sortiert. Dies kann die Leistung bei nachfolgenden Abfragen, die diese Spalten verwenden, erheblich verbessern.

SAS® / CAS-Code Code wartet auf Validierung durch die Community
Kopiert!
1PROC CAS;
2TABLE.addTable /
3 casOut={caslib="CASUSER", name="CARS_PARTITIONED"},
4 partition={"Make"},
5 orderBy={name="Year", order="DESC"},
6 recLen=31,
7 vars={
8 {name="Make", offset=0, LENGTH=8, rType="CHAR", type="CHAR"},
9 {name="Model", offset=8, LENGTH=15, rType="CHAR", type="CHAR"},
10 {name="Year", offset=23, LENGTH=8, rType="NUMERIC", type="SAS"}
11 };
12RUN;
Ergebnis :
Eine neue Tabelle 'CARS_PARTITIONED' wird erstellt. Die Daten werden auf den CAS-Knoten basierend auf den Werten der Spalte 'Make' verteilt. Innerhalb jeder dieser Partitionen sind die Zeilen nach dem Jahr in absteigender Reihenfolge sortiert.

FAQ

Was bewirkt die `addTable`-Aktion?
Wie wird die `addTable`-Aktion in verschiedenen Clients wie CASL oder Python verwendet?
Wofür wird der `caslib`-Parameter verwendet?
Was bewirkt der `replace`-Parameter?
Was ist der Zweck des `promote`-Parameters?

Zugehörige Szenarien

Anwendungsfall
Hochladen von Kundensegmentierungsdaten für eine globale Marketingkampagne

Eine Marketingabteilung muss eine neu erstellte Kundensegmentierungsliste in die CAS-Umgebung hochladen. Diese Tabelle muss für andere Analysten und Data Scientists in verschied...

Anwendungsfall
Effizientes Laden und Partitionieren von großen IoT-Sensordaten

Ein Fertigungsunternehmen sammelt Millionen von Sensordatenpunkten von seinen Maschinen. Um eine schnelle Fehleranalyse und vorausschauende Wartung zu ermöglichen, müssen diese ...

Anwendungsfall
Konfliktmanagement beim Hinzufügen einer bereits existierenden Tabelle ohne Ersetzungs-Flag

Ein automatisierter Job soll täglich eine Snapshot-Tabelle laden. Um versehentliches Überschreiben von Daten zu verhindern, falls der Job fälschlicherweise zweimal ausgeführt wi...