?>Array ( [lang] => fr [id] => 151 ) Scénario Standard : Intégration d'un Algorithme de Scoring Propriétaire en C++ - WeAreCAS
fcmpact addPrototypes

Scénario Standard : Intégration d'un Algorithme de Scoring Propriétaire en C++

Scénario de test & Cas d'usage

Contexte Métier

Une banque d'investissement souhaite utiliser son algorithme de calcul de risque de crédit, développé en C++ pour des raisons de performance et de secret industriel. L'objectif est de rendre cet algorithme appelable depuis SAS Viya pour scorer des portefeuilles clients, tout en protégeant la logique métier en encodant la définition du prototype.
Préparation des Données

Création d'une table CAS 'portefeuille_clients' contenant des données financières simplifiées pour simuler les clients à scorer.

Copié !
1DATA casuser.portefeuille_clients;
2 LENGTH id_client $ 10;
3 DO id_client = 'CLT001', 'CLT002', 'CLT003', 'CLT004';
4 revenu_annuel = 50000 + rand('integer', 100000);
5 ratio_dette = rand('uniform') * 0.8;
6 age_client = 25 + rand('integer', 40);
7 OUTPUT;
8 END;
9RUN;

Étapes de réalisation

1
Chargement de la table de données clients en mémoire CAS.
Copié !
1PROC casutil;
2 load DATA=casuser.portefeuille_clients casout='portefeuille_clients' replace;
3QUIT;
2
Ajout du prototype de la fonction C++ 'calculateRiskScore' en utilisant addPrototypes. La définition est encodée et organisée dans un package 'riskModels'.
Copié !
1PROC CAS;
2 fcmpact.addPrototypes
3 routineCode={"proto calculateRiskScore(double, double, double) returns double;"}
4 library="risk_engine_v2"
5 bridgeFile="/cas/caslibs/public/libs/risk_engine_v2.so"
6 package="riskModels"
7 encode=true
8 funcTable={name="risk_prototypes", caslib="casuser", replace=true};
9QUIT;
3
Vérification de la création de la table des prototypes.
Copié !
1PROC casutil;
2 contents casdata='risk_prototypes' caslib='casuser';
3QUIT;

Résultat Attendu


L'action crée avec succès la table 'risk_prototypes' dans la caslib 'casuser'. La table contient la définition encodée du prototype 'calculateRiskScore'. Cette fonction est maintenant théoriquement disponible pour être utilisée dans une étape DATA ou FCMP pour enrichir la table 'portefeuille_clients' avec un score de risque, démontrant une intégration sécurisée et organisée de code externe.