Wenn jedoch Datenquellen groß sind (mehrere Terabytes), ist es ineffizient, die gesamte Tabelle zu laden, um nur eine Zusammenfassung oder eine Teilmenge davon zu verwenden. Dies verbraucht unnötig Netzwerkbandbreite und RAM.
Obwohl PROC CASUTIL einfache Optionen bietet (WHERE=, VAR=), gibt es eine viel leistungsfähigere Methode, um komplexe Aggregationen oder Joins direkt in der Datenbank durchzuführen, noch bevor die Daten in CAS gelangen: das FedSQL Pass-Through.
Dieses Tutorial untersucht zwei Methoden, um die Arbeit an die Datenbank zu delegieren: den impliziten Modus und den expliziten Modus.
Methode 1: Das implizite Pass-Through (Die „Standard“-Methode)
Das implizite Pass-Through ermöglicht das Schreiben von Standard-FedSQL-Code (ähnlich ANSI-SQL). Der CAS Data Connector ist dafür verantwortlich, Ihre Abfrage in die native Sprache der Datenbank (Postgres-SQL, T-SQL, PL/SQL usw.) zu übersetzen.
Das Beispiel: Einfache Aggregation
Stellen wir uns eine Postgres-Tabelle mit 2 Millionen Zeilen (orders_large) vor. Wir möchten nur die Summe der Verkäufe nach Bestelltyp, gefiltert nach einem Datum, in CAS laden.
cas mysession;
/* Définition de la connexion à Postgres */
caslib caspgr datasource=(srctype="postgres", database="DCON", server="...", ...) libref=caspgr;
proc fedsql sessref=mysession;
/* Création de la table résultante directement dans la RAM de CAS */
create table caspgr.revenuesummary{options replace=true} as
select order_type, sum(total_sale) as revenue
from caspgr."orders_large" /* Notez les guillemets pour préserver la casse */
where order_date < date'2015-01-01'
group by order_type;
quit;
/* Création de la table résultante directement dans la RAM de CAS */
7
create TABLE caspgr.revenuesummary{options replace=true} as
8
select order_type, sum(total_sale) as revenue
9
from caspgr."orders_large"/* Notez les guillemets pour préserver la casse */
10
where order_date < date'2015-01-01'
11
group BY order_type;
12
QUIT;
Was hinter den Kulissen geschieht:
Wenn die Tabelle orders_large noch nicht in CAS geladen ist, erkennt das Modul, dass es sich um eine externe Tabelle handelt. Es übersetzt die Abfrage in Postgres-SQL, sendet sie an den Server und lädt nur das aggregierte Ergebnis (wenige Zeilen) in CAS.
Methode 2: Das explizite Pass-Through (Die „Power User“-Methode)
Manchmal müssen Sie sehr datenbankspezifische Funktionen (JSON-Funktionen, Geodaten-Funktionen, bestimmte Indizes) verwenden, die dem Standard-FedSQL nicht bekannt sind.
SELECT ... FROM CONNECTION TO nom_caslib ( votre_requête_native_ici )
1
SELECT ... FROM CONNECTION TO nom_caslib ( votre_requête_native_ici )
Das fortgeschrittene Beispiel: JSON-Parsing in Postgres
Angenommen, Ihre Postgres-Tabelle jsonorders enthält eine JSON-Spalte. Sie möchten strukturierte Informationen (Kundenstatus, Menge) aus diesem JSON extrahieren und vor dem Laden in CAS aggregieren.
FedSQL kann JSON nicht nativ parsen, Postgres aber schon.
proc fedsql sessref=mysession;
create table caspgr.StateSalesSummary as
select customerstate, minquantity, maxquantity, sumquantity
from connection to caspgr
(
/* DEBUT DU SQL NATIF POSTGRES */
SELECT customerstate,
min(quantity) as minquantity,
max(quantity) as maxquantity,
sum(quantity) as sumquantity
FROM
(
/* Utilisation des opérateurs JSON Postgres -> et ->> */
SELECT orderinfo -> 'customer' ->> 'state' as customerstate,
cast(orderinfo -> 'items' ->> 'qty' as integer) as quantity
FROM jsonorders
) t
GROUP BY customerstate
/* FIN DU SQL NATIF POSTGRES */
);
quit;
Ergebnis: Postgres führt die JSON-Extraktion und die aufwendige Aggregation durch. CAS erhält nur eine kleine, gebrauchsfertige Übersichts-Tabelle.
Wichtiger Haftungsausschluss
Die auf WeAreCAS.eu bereitgestellten Codes und Beispiele dienen Lehrzwecken. Es ist zwingend erforderlich, sie nicht blind in Ihre Produktionsumgebungen zu kopieren. Der beste Ansatz besteht darin, die Logik zu verstehen, bevor sie angewendet wird. Wir empfehlen dringend, diese Skripte in einer Testumgebung (Sandbox/Dev) zu testen. WeAreCAS übernimmt keine Verantwortung für mögliche Auswirkungen oder Datenverluste auf Ihren Systemen.
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.