ETL CAS

Unir tablas de múltiples caslibs con fedSql.execDirect

Este código también está disponible en: Deutsch English Français
Nivel de dificultad
Principiante
Publicado el :
La acción fedSql.execDirect permite unir tablas de diferentes librerías de CAS (caslibs) en una sola consulta. Para consultas que involucran múltiples caslibs, se debe usar un nombre de dos niveles (caslib.nombre_de_tabla). Una consulta que une tablas de múltiples caslibs no es elegible para la transmisión implícita (implicit pass-through) de FedSQL. Este ejemplo ilustra la creación y manipulación de datos temporales en memoria CAS para demostraciones autónomas, cubriendo uniones simples, filtros, agregaciones y la creación de vistas FedSQL.
Análisis de datos

Type : CREACION_INTERNA


Los ejemplos utilizan datos generados (datalines) o SASHELP para las demostraciones. Las tablas Customers, Products y Sales se crean en memoria CAS a partir de pasos DATA.

1 Bloque de código
PROC FEDSQL Data
Explicación :
Este ejemplo muestra una unión simple entre las tablas 'Customers_Basic' y 'Sales_Basic' basadas en el ID de cliente (CUSTID). Selecciona el CUSTID, el nombre del cliente y el total de ventas, y almacena el resultado en una nueva tabla 'results_basic'.
¡Copiado!
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 Bloque de código
PROC FEDSQL Data
Explicación :
Este ejemplo extiende la unión incluyendo la tabla 'Products_Common'. Filtra los resultados para mostrar solo las ventas a clientes ubicados en 'USA' y ordena los resultados por el total de ventas en orden descendente.
¡Copiado!
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 Bloque de código
PROC FEDSQL Data
Explicación :
Este ejemplo avanzado calcula el total de ventas para cada producto uniendo 'Products_Adv' y 'Sales_Adv', luego filtra los resultados para incluir solo los productos cuyo total de ventas supera 1.000.000. Los resultados se ordenan por el total de ventas.
¡Copiado!
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 Bloque de código
PROC FEDSQL Data
Explicación :
Este ejemplo demuestra una integración más profunda con Viya creando una vista FedSQL llamada 'customer_sales_view' a partir de las tablas 'Customers_Viya' y 'Sales_Viya'. Luego, la vista se consulta para mostrar los registros donde el total de ventas es superior a 500.000.
¡Copiado!
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;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.

Documentación relacionada

Aucune documentation spécifique pour cette catégorie.