Die Beispiele erstellen Demodaten (temporäre CAS-Tabellen), um den Zugriff auf eine 'employees'-Tabelle zu simulieren, die normalerweise in einer externen Datenbank über eine Caslib namens 'TDcaslib' liegen würde. Dies gewährleistet die Autonomie der Beispiele, ohne eine tatsächliche Verbindung zu einer Teradata-Datenbank zu benötigen.
1 Codeblock
DATA STEP / PROC CAS fedSql.execDirect Data
Erklärung : Dieses Beispiel zeigt die minimale Verwendung von `fedSql.execDirect`, um eine native SQL-Abfrage an eine externe Datenbank über eine Caslib namens `TDcaslib` zu senden. Die native Abfrage `select unique Pos from employees` wird direkt auf der Datenquelle ausgeführt. Um das Beispiel eigenständig zu machen, wird zunächst eine Tabelle `casuser.employees` in CAS erstellt, um die Struktur der Daten zu simulieren, die auf der externen Datenbank erwartet würden.
Kopiert!
/* Création d'une table CAS temporaire pour simuler la table 'employees' sur Teradata */
/* Dans un environnement réel, la table 'employees' existerait sur Teradata. */
/* Ici, 'TDcaslib' est une caslib logique pointant vers la table casuser.employees. */
data casuser.employees;
input EmployeeID Name $ Pos $;
datalines;
101 John Manager
102 Jane Developer
103 Mike Developer
104 Sarah Sales Associate
105 Chris Manager
106 Emily Executive Assistant
;
run;
proc cas;
/* Utilisation de fedSql.execDirect pour exécuter une requête SQL native sur la source de données via TDcaslib. */
/* La clause CONNECTION TO TDcaslib() encapsule la requête native pour Teradata. */
fedSql.execDirect query='
select pos from connection to TDcaslib
( select unique Pos from employees )';
quit;
/* Nettoyage de la table temporaire */
proc cas;
table.dropTable casin='casuser.employees';
quit;
1
/* Création d'une table CAS temporaire pour simuler la table 'employees' sur Teradata */
2
/* Dans un environnement réel, la table 'employees' existerait sur Teradata. */
3
/* Ici, 'TDcaslib' est une caslib logique pointant vers la table casuser.employees. */
4
DATA casuser.employees;
5
INPUT EmployeeID Name $ Pos $;
6
DATALINES;
7
101 John Manager
8
102 Jane Developer
9
103 Mike Developer
10
104 Sarah Sales Associate
11
105 Chris Manager
12
106 Emily Executive Assistant
13
;
14
RUN;
15
16
PROC CAS;
17
/* Utilisation de fedSql.execDirect pour exécuter une requête SQL native sur la source de données via TDcaslib. */
18
/* La clause CONNECTION TO TDcaslib() encapsule la requête native pour Teradata. */
19
fedSql.execDirect query='
20
select pos from connection to TDcaslib
21
( select unique Pos from employees )';
22
QUIT;
23
24
/* Nettoyage de la table temporaire */
25
PROC CAS;
26
TABLE.dropTable casin='casuser.employees';
27
QUIT;
2 Codeblock
PROC CAS fedSql.execDirect
Erklärung : Dieses Zwischenbeispiel verfeinert die SQL-Pass-Through-Abfrage, indem es eine `WHERE`-Klausel zum Filtern von Mitarbeitern mit der Position 'Developer' und eine `ORDER BY`-Klausel zum Sortieren der Ergebnisse nach Namen hinzufügt. Dies zeigt, wie komplexere SQL-Optionen (Filtern und Sortieren) direkt über `fedSql.execDirect` an die externe Datenbank übermittelt werden können.
Kopiert!
/* Pré-requis: La table casuser.employees est supposée exister et être chargée en CAS, comme dans l'Exemple 1. */
/* Nous la recréons pour garantir l'autonomie si cet exemple est exécuté seul. */
data casuser.employees;
input EmployeeID Name $ Pos $;
datalines;
101 John Manager
102 Jane Developer
103 Mike Developer
104 Sarah Sales Associate
105 Chris Manager
106 Emily Executive Assistant
;
run;
proc cas;
/* Cet exemple utilise une clause WHERE et ORDER BY dans la requête native passée via CONNECTION TO. */
/* Les données des employés avec la position 'Developer' sont filtrées et triées par nom. */
fedSql.execDirect query='
select EmployeeID, Name, Pos from connection to TDcaslib
( select EmployeeID, Name, Pos from employees where Pos = ''Developer'' order by Name )';
quit;
/* Nettoyage de la table temporaire */
proc cas;
table.dropTable casin='casuser.employees';
quit;
1
/* Pré-requis: La table casuser.employees est supposée exister et être chargée en CAS, comme dans l'Exemple 1. */
2
/* Nous la recréons pour garantir l'autonomie si cet exemple est exécuté seul. */
3
DATA casuser.employees;
4
INPUT EmployeeID Name $ Pos $;
5
DATALINES;
6
101 John Manager
7
102 Jane Developer
8
103 Mike Developer
9
104 Sarah Sales Associate
10
105 Chris Manager
11
106 Emily Executive Assistant
12
;
13
RUN;
14
15
PROC CAS;
16
/* Cet exemple utilise une clause WHERE et ORDER BY dans la requête native passée via CONNECTION TO. */
17
/* Les données des employés avec la position 'Developer' sont filtrées et triées par nom. */
18
fedSql.execDirect query='
19
select EmployeeID, Name, Pos from connection to TDcaslib
20
( select EmployeeID, Name, Pos from employees where Pos = ''Developer'' order by Name )';
21
QUIT;
22
23
/* Nettoyage de la table temporaire */
24
PROC CAS;
25
TABLE.dropTable casin='casuser.employees';
26
QUIT;
3 Codeblock
PROC CAS fedSql.execDirect
Erklärung : Dieses fortgeschrittene Beispiel zeigt, wie eine komplexe Aggregation (Zählung der Mitarbeiter nach Position) direkt auf der externen Datenbank mithilfe der `GROUP BY`- und `ORDER BY`-Klauseln in der nativen Pass-Through-Abfrage ausgeführt wird. Dies optimiert die Leistung, indem die intensive Verarbeitung (hier die Aggregation) an die Quellendatenbank delegiert wird, wodurch die Übertragung unnötiger Daten an CAS reduziert wird.
Kopiert!
/* Pré-requis: La table casuser.employees est supposée exister et être chargée en CAS, comme dans l'Exemple 1. */
/* Nous la recréons pour garantir l'autonomie si cet exemple est exécuté seul. */
data casuser.employees;
input EmployeeID Name $ Pos $;
datalines;
101 John Manager
102 Jane Developer
103 Mike Developer
104 Sarah Sales Associate
105 Chris Manager
106 Emily Executive Assistant
;
run;
proc cas;
/* Cet exemple utilise une requête native avec agrégation et groupement exécutée sur la source de données. */
/* Il compte le nombre d'employés par position et trie les résultats. */
fedSql.execDirect query='
select Pos, count(EmployeeID) as NumberOfEmployees
from connection to TDcaslib
( select EmployeeID, Pos from employees )
group by Pos
order by NumberOfEmployees desc';
quit;
/* Nettoyage de la table temporaire */
proc cas;
table.dropTable casin='casuser.employees';
quit;
1
/* Pré-requis: La table casuser.employees est supposée exister et être chargée en CAS, comme dans l'Exemple 1. */
2
/* Nous la recréons pour garantir l'autonomie si cet exemple est exécuté seul. */
3
DATA casuser.employees;
4
INPUT EmployeeID Name $ Pos $;
5
DATALINES;
6
101 John Manager
7
102 Jane Developer
8
103 Mike Developer
9
104 Sarah Sales Associate
10
105 Chris Manager
11
106 Emily Executive Assistant
12
;
13
RUN;
14
15
PROC CAS;
16
/* Cet exemple utilise une requête native avec agrégation et groupement exécutée sur la source de données. */
17
/* Il compte le nombre d'employés par position et trie les résultats. */
18
fedSql.execDirect query='
19
select Pos, count(EmployeeID) as NumberOfEmployees
20
from connection to TDcaslib
21
( select EmployeeID, Pos from employees )
22
group by Pos
23
order by NumberOfEmployees desc';
24
QUIT;
25
26
/* Nettoyage de la table temporaire */
27
PROC CAS;
28
TABLE.dropTable casin='casuser.employees';
29
QUIT;
4 Codeblock
PROC CAS fedSql.execDirect / table.fetch
Erklärung : Dieses Beispiel demonstriert eine Schlüsselfunktion der CAS-Integration: die Möglichkeit, das Resultset einer nativen SQL-Pass-Through-Abfrage direkt in einer neuen verteilten In-Memory-Tabelle von CAS (`casuser.UniquePositions`) zu materialisieren. Dieser Ansatz ist entscheidend für Workflows, bei denen die Quelldaten später mit den analytischen Fähigkeiten und der Leistung von CAS verarbeitet werden müssen.
Kopiert!
/* Pré-requis: La table casuser.employees est supposée exister et être chargée en CAS, comme dans l'Exemple 1. */
/* Nous la recréons pour garantir l'autonomie si cet exemple est exécuté seul. */
data casuser.employees;
input EmployeeID Name $ Pos $;
datalines;
101 John Manager
102 Jane Developer
103 Mike Developer
104 Sarah Sales Associate
105 Chris Manager
106 Emily Executive Assistant
;
run;
proc cas;
/* Exécute une requête pass-through et charge le résultat directement dans une nouvelle table CAS. */
/* L'option 'replace=true' permet de recréer la table si elle existe déjà. */
fedSql.execDirect query='
create table casuser.UniquePositions {options replace=true} as
select distinct Pos from connection to TDcaslib
( select Pos from employees )';
/* Affiche le contenu de la nouvelle table CAS créée à partir du résultat du pass-through. */
table.fetch casin='casuser.UniquePositions';
quit;
/* Nettoyage */
proc cas;
table.dropTable casin='casuser.UniquePositions';
table.dropTable casin='casuser.employees';
quit;
1
/* Pré-requis: La table casuser.employees est supposée exister et être chargée en CAS, comme dans l'Exemple 1. */
2
/* Nous la recréons pour garantir l'autonomie si cet exemple est exécuté seul. */
3
DATA casuser.employees;
4
INPUT EmployeeID Name $ Pos $;
5
DATALINES;
6
101 John Manager
7
102 Jane Developer
8
103 Mike Developer
9
104 Sarah Sales Associate
10
105 Chris Manager
11
106 Emily Executive Assistant
12
;
13
RUN;
14
15
PROC CAS;
16
/* Exécute une requête pass-through et charge le résultat directement dans une nouvelle table CAS. */
17
/* L'option 'replace=true' permet de recréer la table si elle existe déjà. */
18
fedSql.execDirect query='
19
create table casuser.UniquePositions {options replace=true} as
20
select distinct Pos from connection to TDcaslib
21
( select Pos from employees )';
22
23
/* Affiche le contenu de la nouvelle table CAS créée à partir du résultat du pass-through. */
24
TABLE.fetch casin='casuser.UniquePositions';
25
QUIT;
26
27
/* Nettoyage */
28
PROC CAS;
29
TABLE.dropTable casin='casuser.UniquePositions';
30
TABLE.dropTable casin='casuser.employees';
31
QUIT;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.