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!
/* --- Données de démonstration pour l'exemple 1 --- */
data Customers_data;
infile datalines dsd;
input CUSTID NAME $ COUNTRY $;
datalines;
1,Peter Frank,USA
2,Jim Stewart,USA
3,Janet Chien,Japan
4,Qing Ziao,Japan
5,Humberto Sertu,Argentina
;
run;
data Sales_data;
infile datalines dsd;
input PRODID CUSTID TOTALS;
datalines;
3421,4,781183
1424,3,555789
3975,5,899453
3421,2,2789654
3234,1,189400
1424,1,123456
3422,2,987654
;
run;
proc casutil;
load data=Customers_data outcaslib="casuser" casout="Customers_Basic" replace;
load data=Sales_data outcaslib="casuser" casout="Sales_Basic" replace;
quit;
/* --- Exemple SAS --- */
proc cas;
fedSql.execDirect query="
create table results_basic {options replace=true} as
select
C.CUSTID,
C.NAME,
S.TOTALS
from
casuser.Customers_Basic as C,
casuser.Sales_Basic as S
where
C.CUSTID = S.CUSTID
";
fedSql.execDirect query="select * from results_basic";
quit;
1
/* --- Données de démonstration pour l'exemple 1 --- */
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";
48
QUIT;
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!
/* --- Données de démonstration pour l'exemple 2 --- */
data Customers_data;
infile datalines dsd;
input CUSTID NAME $ COUNTRY $;
datalines;
1,Peter Frank,USA
2,Jim Stewart,USA
3,Janet Chien,Japan
4,Qing Ziao,Japan
5,Humberto Sertu,Argentina
;
run;
data Products_data;
infile datalines dsd;
input PRODID PRODUCT $;
datalines;
3234,Rice
1424,Corn
3421,Wheat
3422,Oat
3975,Barley
;
run;
data Sales_data;
infile datalines dsd;
input PRODID CUSTID TOTALS;
datalines;
3421,4,781183
1424,3,555789
3975,5,899453
3421,2,2789654
3234,1,189400
1424,1,123456
3422,2,987654
;
run;
proc casutil;
load data=Customers_data outcaslib="casuser" casout="Customers_Common" replace;
load data=Products_data outcaslib="casuser" casout="Products_Common" replace;
load data=Sales_data outcaslib="casuser" casout="Sales_Common" replace;
quit;
/* --- Exemple SAS --- */
proc cas;
fedSql.execDirect query="
create table results_common {options replace=true} as
select
P.PRODUCT,
C.NAME,
S.TOTALS,
C.COUNTRY
from
casuser.Products_Common as P,
casuser.Sales_Common as S,
casuser.Customers_Common as C
where
P.PRODID = S.PRODID and
C.CUSTID = S.CUSTID and
C.COUNTRY = 'USA'
order by S.TOTALS desc
";
fedSql.execDirect query="select * from results_common";
quit;
1
/* --- Données de démonstration pour l'exemple 2 --- */
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";
66
QUIT;
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!
/* --- Données de démonstration pour l'exemple 3 --- */
data Customers_data;
infile datalines dsd;
input CUSTID NAME $ COUNTRY $;
datalines;
1,Peter Frank,USA
2,Jim Stewart,USA
3,Janet Chien,Japan
4,Qing Ziao,Japan
5,Humberto Sertu,Argentina
;
run;
data Products_data;
infile datalines dsd;
input PRODID PRODUCT $;
datalines;
3234,Rice
1424,Corn
3421,Wheat
3422,Oat
3975,Barley
;
run;
data Sales_data;
infile datalines dsd;
input PRODID CUSTID TOTALS;
datalines;
3421,4,781183
1424,3,555789
3975,5,899453
3421,2,2789654
3234,1,189400
1424,1,123456
3422,2,987654
;
run;
proc casutil;
load data=Customers_data outcaslib="casuser" casout="Customers_Adv" replace;
load data=Products_data outcaslib="casuser" casout="Products_Adv" replace;
load data=Sales_data outcaslib="casuser" casout="Sales_Adv" replace;
quit;
/* --- Exemple SAS --- */
proc cas;
fedSql.execDirect query="
create table top_selling_products {options replace=true} as
select
P.PRODUCT,
SUM(S.TOTALS) as TOTAL_SALES
from
casuser.Products_Adv as P,
casuser.Sales_Adv as S
where
P.PRODID = S.PRODID
group by
P.PRODUCT
having
SUM(S.TOTALS) > 1000000
order by
TOTAL_SALES desc
";
fedSql.execDirect query="select * from top_selling_products";
quit;
1
/* --- Données de démonstration pour l'exemple 3 --- */
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";
66
QUIT;
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!
/* --- Données de démonstration pour l'exemple 4 --- */
data Customers_data;
infile datalines dsd;
input CUSTID NAME $ COUNTRY $;
datalines;
1,Peter Frank,USA
2,Jim Stewart,USA
3,Janet Chien,Japan
4,Qing Ziao,Japan
5,Humberto Sertu,Argentina
;
run;
data Sales_data;
infile datalines dsd;
input PRODID CUSTID TOTALS;
datalines;
3421,4,781183
1424,3,555789
3975,5,899453
3421,2,2789654
3234,1,189400
1424,1,123456
3422,2,987654
;
run;
proc casutil;
load data=Customers_data outcaslib="casuser" casout="Customers_Viya" replace;
load data=Sales_data outcaslib="casuser" casout="Sales_Viya" replace;
quit;
/* --- Exemple SAS --- */
proc cas;
/* Créer une vue FedSQL sur des tables CAS */
fedSql.execDirect query="
create view customer_sales_view {options replace=true} as
select
C.NAME,
C.COUNTRY,
S.TOTALS
from
casuser.Customers_Viya as C,
casuser.Sales_Viya as S
where
C.CUSTID = S.CUSTID
";
/* Interroger la vue FedSQL */
fedSql.execDirect query="select * from customer_sales_view where TOTALS > 500000";
quit;
1
/* --- Données de démonstration pour l'exemple 4 --- */
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";
51
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.