Lancez-vous ! Guide du débutant pour la programmation dans l'environnement SAS® Cloud Analytic Services (CAS)
Simon 37 Aufrufe
Schwierigkeitsgrad
Débutant
Veröffentlicht am :
Expertenrat
Michael
"La transition vers CAS n'est pas juste un changement de syntaxe, c'est un changement de philosophie. Ne cherchez pas à répliquer trait pour trait vos anciens processus ETL séquentiels : pour tirer profit de l'architecture distribuée (MPP), concentrez-vous d'abord sur l'étape cruciale du chargement des données en mémoire (In-Memory) pour minimiser les lectures disque ultérieures.
Cet article a pour but de vous guider dans vos premiers pas avec CAS, en couvrant l'ensemble du processus, de l'établissement d'une session à l'analyse des données.
L'architecture CAS en bref
Le serveur CAS peut fonctionner sur une seule machine (SMP) ou en mode distribué sur plusieurs machines (MPP). L'architecture distribuée comprend :
Un nœud contrôleur (Controller) : Il communique avec les applications clientes et dirige le travail.
Des nœuds de travail (Workers) : Ils effectuent les calculs et l'analyse sur les lignes de données stockées en mémoire sur leur nœud respectif.
Les avantages clés de CAS
Voici un résumé des principaux avantages de l'utilisation de l'environnement CAS :
Tableau 1 : Bénéfices de l'environnement CAS
Bénéfice
Description
Vitesse de traitement
L'architecture distribuée et le traitement en mémoire permettent des analyses extrêmement rapides sur des données volumineuses.
Tolérance aux pannes
Si un nœud de travail ne répond plus, le contrôleur redirige le travail vers un autre nœud utilisant une copie des données, assurant la continuité.
Évolutivité (Scalabilité)
Il est possible d'ajouter horizontalement des nœuds de travail pour répartir la charge et améliorer les temps de traitement.
La différence majeure : Le traitement parallèle
Dans CAS, l'étape DATA s'exécute de manière distribuée. Les données très volumineuses sont divisées entre les "threads" (fils d'exécution) disponibles sur les différentes machines. Le code de l'étape DATA est copié et exécuté simultanément sur chaque thread, ne traitant que la portion de données locale à ce thread.
Exemple de traitement parallèle :
Dans l'exemple ci-dessous, nous ajoutons des frais de transaction à une grande table bancaire. L'utilisation de la variable automatique _THREADID_ dans le journal montre que le code s'exécute sur plusieurs threads différents (par exemple, 4 threads).
data mycas.updated_transaction_history;
set mycas.transaction_history;
/* Logique pour ajouter des frais selon l'année */
if year(transaction_dt)=2013 then fee=1;
/* ... autres années ... */
new_transaction_amt=transaction_amt+fee;
put _threadid_=; /* Affiche le numéro du thread dans le journal */
run;
1
DATA mycas.updated_transaction_history;
2
SET mycas.transaction_history;
3
/* Logique pour ajouter des frais selon l'année */
4
IF year(transaction_dt)=2013THEN fee=1;
5
/* ... autres années ... */
6
new_transaction_amt=transaction_amt+fee;
7
put _threadid_=; /* Affiche le numéro du thread dans le journal */
Étape 5 : Utiliser PROC CAS pour exécuter des actions
PROC CAS est l'interface pour exécuter le langage CASL (CAS Language). CASL interagit avec le serveur via des "actions". Les actions sont des demandes de tâches spécifiques (gestion de tables, analyses, etc.), regroupées en "ensembles d'actions" (action sets).
Voici des exemples d'actions de l'ensemble table pour gérer les données :
Vérifier l'existence d'une table et récupérer des infos :
proc cas;
session casauto;
/* Vérifier si la table existe */
table.tableexists result=r / caslib='casuser' name='updated_transaction_history';
if (r.exists) then do;
/* Obtenir les infos de la table */
table.tableinfo / caslib='casuser' name='updated_transaction_history';
/* Récupérer (fetch) un échantillon de lignes */
table.fetch / table={caslib='casuser', name='updated_transaction_history'} from=1 to=20;
end;
quit;
Promouvoir une table (la rendre globale) :
Les tables créées sont souvent de portée "session". L'action promote permet de les rendre disponibles aux autres utilisateurs.
Méthode A : Utiliser une action CAS (ex: simple.freq)
L'ensemble d'actions simple fournit des fonctions analytiques de base.
proc cas;
session casauto;
/* Distribution de fréquence du statut de transaction groupé par année */
simple.freq /
inputs={'transaction_status'}
table={caslib='casuser', name='updated_transaction_history', groupby={name='year'}};
quit;
1
PROC CAS;
2
SESSION casauto;
3
/* Distribution de fréquence du statut de transaction groupé par année */
/* Préparation des données : ajout d'une colonne mois */
data mycas.updated_transaction_history2;
set mycas.updated_transaction_history;
month=put(transaction_dt,monname8.);
run;
/* Calcul des sommes par année et mois */
proc mdsummary data=mycas.updated_transaction_history2(where=(fee ne 0));
var fee;
groupby year month / out=mycas.summary_transaction_history;
run;
/* Affichage des résultats (car MDSUMMARY ne produit qu'une table de sortie) */
proc print data=mycas.summary_transaction_history label;
title 'Résumé de l\'historique des transactions';
var year month _sum_;
label _sum_='Total collecté ($)';
format _sum_ dollar8.;
run;
1
/* Préparation des données : ajout d'une colonne mois */
2
DATA mycas.updated_transaction_history2;
3
SET mycas.updated_transaction_history;
4
month=put(transaction_dt,monname8.);
5
RUN;
6
7
/* Calcul des sommes par année et mois */
8
PROC MDSUMMARYDATA=mycas.updated_transaction_history2(where=(fee ne 0));
9
var fee;
10
groupby year month / out=mycas.summary_transaction_history;
11
RUN;
12
13
/* Affichage des résultats (car MDSUMMARY ne produit qu'une table de sortie) */
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.