Veröffentlicht am :
ETL CREATION_INTERNE

Verknüpfen von Tabellen aus mehreren Caslibs mit fedSql.execDirect

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Die fedSql.execDirect-Aktion ermöglicht das Verknüpfen von Tabellen aus verschiedenen Caslibs in einer einzigen Abfrage. Für Abfragen, die mehrere Caslibs betreffen, muss ein zweistufiger Name (caslib.tabellenname) verwendet werden. Eine Abfrage, die Tabellen aus mehreren Caslibs verknüpft, ist nicht für die implizite FedSQL-Pass-Through-Übertragung qualifiziert. Dieses Beispiel veranschaulicht die Erstellung und Bearbeitung temporärer CAS-Speicherdaten für eigenständige Demonstrationen, die einfache Verknüpfungen, Filter, Aggregationen und die Erstellung von FedSQL-Ansichten abdecken.
Datenanalyse

Type : CREATION_INTERNE


Die Beispiele verwenden generierte Daten (Datalines) oder SASHELP für Demonstrationen. Die Tabellen Customers, Products und Sales werden im CAS-Speicher aus DATA-Schritten erstellt.

1 Codeblock
PROC FEDSQL Data
Erklärung :
Dieses Beispiel zeigt eine einfache Verknüpfung zwischen den Tabellen 'Customers_Basic' und 'Sales_Basic' basierend auf der Kunden-ID (CUSTID). Es wählt die CUSTID, den Namen des Kunden und den Gesamtumsatz aus und speichert das Ergebnis in einer neuen Tabelle namens 'results_basic'.
Kopiert!
1/* --- Données de démonstration pour l'exemple 1 --- */
2DATA Customers_data;
3 INFILE DATALINES dsd;
4 INPUT CUSTID NAME $ COUNTRY $;
5 DATALINES;
61,Peter Frank,USA
72,Jim Stewart,USA
83,Janet Chien,Japan
94,Qing Ziao,Japan
105,Humberto Sertu,Argentina
11;
12RUN;
13 
14DATA Sales_data;
15 INFILE DATALINES dsd;
16 INPUT PRODID CUSTID TOTALS;
17 DATALINES;
183421,4,781183
191424,3,555789
203975,5,899453
213421,2,2789654
223234,1,189400
231424,1,123456
243422,2,987654
25;
26RUN;
27 
28PROC CASUTIL;
29 load DATA=Customers_data outcaslib="casuser" casout="Customers_Basic" replace;
30 load DATA=Sales_data outcaslib="casuser" casout="Sales_Basic" replace;
31QUIT;
32 
33/* --- Exemple SAS --- */
34PROC CAS;
35 fedSql.execDirect query="
36 create table results_basic {options replace=true} as
37 select
38 C.CUSTID,
39 C.NAME,
40 S.TOTALS
41 from
42 casuser.Customers_Basic as C,
43 casuser.Sales_Basic as S
44 where
45 C.CUSTID = S.CUSTID
46 ";
47 fedSql.execDirect query="select * from results_basic";
48QUIT;
2 Codeblock
PROC FEDSQL Data
Erklärung :
Dieses Beispiel erweitert die Verknüpfung um die Tabelle 'Products_Common'. Es filtert die Ergebnisse, um nur Verkäufe an Kunden in den 'USA' anzuzeigen, und sortiert die Ergebnisse nach dem Gesamtumsatz in absteigender Reihenfolge.
Kopiert!
1/* --- Données de démonstration pour l'exemple 2 --- */
2DATA Customers_data;
3 INFILE DATALINES dsd;
4 INPUT CUSTID NAME $ COUNTRY $;
5 DATALINES;
61,Peter Frank,USA
72,Jim Stewart,USA
83,Janet Chien,Japan
94,Qing Ziao,Japan
105,Humberto Sertu,Argentina
11;
12RUN;
13 
14DATA Products_data;
15 INFILE DATALINES dsd;
16 INPUT PRODID PRODUCT $;
17 DATALINES;
183234,Rice
191424,Corn
203421,Wheat
213422,Oat
223975,Barley
23;
24RUN;
25 
26DATA Sales_data;
27 INFILE DATALINES dsd;
28 INPUT PRODID CUSTID TOTALS;
29 DATALINES;
303421,4,781183
311424,3,555789
323975,5,899453
333421,2,2789654
343234,1,189400
351424,1,123456
363422,2,987654
37;
38RUN;
39 
40PROC CASUTIL;
41 load DATA=Customers_data outcaslib="casuser" casout="Customers_Common" replace;
42 load DATA=Products_data outcaslib="casuser" casout="Products_Common" replace;
43 load DATA=Sales_data outcaslib="casuser" casout="Sales_Common" replace;
44QUIT;
45 
46/* --- Exemple SAS --- */
47PROC CAS;
48 fedSql.execDirect query="
49 create table results_common {options replace=true} as
50 select
51 P.PRODUCT,
52 C.NAME,
53 S.TOTALS,
54 C.COUNTRY
55 from
56 casuser.Products_Common as P,
57 casuser.Sales_Common as S,
58 casuser.Customers_Common as C
59 where
60 P.PRODID = S.PRODID and
61 C.CUSTID = S.CUSTID and
62 C.COUNTRY = 'USA'
63 order by S.TOTALS desc
64 ";
65 fedSql.execDirect query="select * from results_common";
66QUIT;
3 Codeblock
PROC FEDSQL Data
Erklärung :
Dieses erweiterte Beispiel berechnet den Gesamtumsatz für jedes Produkt durch Verknüpfung von 'Products_Adv' und 'Sales_Adv' und filtert dann die Ergebnisse, um nur Produkte mit einem Gesamtumsatz von über 1.000.000 einzuschließen. Die Ergebnisse werden nach dem Gesamtumsatz sortiert.
Kopiert!
1/* --- Données de démonstration pour l'exemple 3 --- */
2DATA Customers_data;
3 INFILE DATALINES dsd;
4 INPUT CUSTID NAME $ COUNTRY $;
5 DATALINES;
61,Peter Frank,USA
72,Jim Stewart,USA
83,Janet Chien,Japan
94,Qing Ziao,Japan
105,Humberto Sertu,Argentina
11;
12RUN;
13 
14DATA Products_data;
15 INFILE DATALINES dsd;
16 INPUT PRODID PRODUCT $;
17 DATALINES;
183234,Rice
191424,Corn
203421,Wheat
213422,Oat
223975,Barley
23;
24RUN;
25 
26DATA Sales_data;
27 INFILE DATALINES dsd;
28 INPUT PRODID CUSTID TOTALS;
29 DATALINES;
303421,4,781183
311424,3,555789
323975,5,899453
333421,2,2789654
343234,1,189400
351424,1,123456
363422,2,987654
37;
38RUN;
39 
40PROC CASUTIL;
41 load DATA=Customers_data outcaslib="casuser" casout="Customers_Adv" replace;
42 load DATA=Products_data outcaslib="casuser" casout="Products_Adv" replace;
43 load DATA=Sales_data outcaslib="casuser" casout="Sales_Adv" replace;
44QUIT;
45 
46/* --- Exemple SAS --- */
47PROC CAS;
48 fedSql.execDirect query="
49 create table top_selling_products {options replace=true} as
50 select
51 P.PRODUCT,
52 SUM(S.TOTALS) as TOTAL_SALES
53 from
54 casuser.Products_Adv as P,
55 casuser.Sales_Adv as S
56 where
57 P.PRODID = S.PRODID
58 group by
59 P.PRODUCT
60 having
61 SUM(S.TOTALS) > 1000000
62 order by
63 TOTAL_SALES desc
64 ";
65 fedSql.execDirect query="select * from top_selling_products";
66QUIT;
4 Codeblock
PROC FEDSQL Data
Erklärung :
Dieses Beispiel zeigt eine tiefere Integration mit Viya durch die Erstellung einer FedSQL-Ansicht namens 'customer_sales_view' aus den Tabellen 'Customers_Viya' und 'Sales_Viya'. Anschließend wird die Ansicht abgefragt, um Datensätze anzuzeigen, bei denen der Gesamtumsatz über 500.000 liegt.
Kopiert!
1/* --- Données de démonstration pour l'exemple 4 --- */
2DATA Customers_data;
3 INFILE DATALINES dsd;
4 INPUT CUSTID NAME $ COUNTRY $;
5 DATALINES;
61,Peter Frank,USA
72,Jim Stewart,USA
83,Janet Chien,Japan
94,Qing Ziao,Japan
105,Humberto Sertu,Argentina
11;
12RUN;
13 
14DATA Sales_data;
15 INFILE DATALINES dsd;
16 INPUT PRODID CUSTID TOTALS;
17 DATALINES;
183421,4,781183
191424,3,555789
203975,5,899453
213421,2,2789654
223234,1,189400
231424,1,123456
243422,2,987654
25;
26RUN;
27 
28PROC CASUTIL;
29 load DATA=Customers_data outcaslib="casuser" casout="Customers_Viya" replace;
30 load DATA=Sales_data outcaslib="casuser" casout="Sales_Viya" replace;
31QUIT;
32 
33/* --- Exemple SAS --- */
34PROC CAS;
35 /* Créer une vue FedSQL sur des tables CAS */
36 fedSql.execDirect query="
37 create view customer_sales_view {options replace=true} as
38 select
39 C.NAME,
40 C.COUNTRY,
41 S.TOTALS
42 from
43 casuser.Customers_Viya as C,
44 casuser.Sales_Viya as S
45 where
46 C.CUSTID = S.CUSTID
47 ";
48 
49 /* Interroger la vue FedSQL */
50 fedSql.execDirect query="select * from customer_sales_view where TOTALS > 500000";
51QUIT;
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.