Scénario de test & Cas d'usage
Analyse de réseaux et algorithmes de graphes.
Découvrir toutes les actions de optNetworkGénération d'un jeu de données volumineux simulant des interactions (liens) entre utilisateurs, avec une variable 'pays' pour permettre un traitement groupé.
| 1 | DATA mycas.InteractionsSociales(keep=pays utilisateur_A utilisateur_B); |
| 2 | call streaminit(123); |
| 3 | array pays_list{3} $ ('FR', 'DE', 'ES'); |
| 4 | DO pays_idx = 1 to dim(pays_list); |
| 5 | pays = pays_list[pays_idx]; |
| 6 | DO i = 1 to 5000; /* Génère 5000 liens par pays */ |
| 7 | utilisateur_A = cat(pays, floor(rand('UNIFORM')*200)); |
| 8 | utilisateur_B = cat(pays, floor(rand('UNIFORM')*200)); |
| 9 | IF utilisateur_A ne utilisateur_B THEN OUTPUT; |
| 10 | END; |
| 11 | END; |
| 12 | RUN; |
| 1 | PROC CAS; |
| 2 | ACTION optNetwork.biconnectedComponents / |
| 3 | links={name='InteractionsSociales', groupBy={'pays'}}, |
| 4 | logLevel='MODERATE', |
| 5 | nThreads=4, |
| 6 | outNodes={name='InfluenceursParPays', replace=true, groupBy={'_GROUPID_'}}, |
| 7 | outGraphList={name='ResumeParPays', replace=true}; |
| 8 | RUN; |
| 9 | QUIT; |
| 1 | PROC PRINT DATA=mycas.ResumeParPays; |
| 2 | RUN; |
| 1 | |
| 2 | PROC PRINT |
| 3 | DATA=mycas.InfluenceursParPays; |
| 4 | where _GROUPID_ contains 'pays=FR' and artpoint = 1; |
| 5 | RUN; |
| 6 |
L'action doit s'exécuter sans erreur et créer une table 'ResumeParPays' listant les 3 graphes générés (un pour FR, un pour DE, un pour ES). La table 'InfluenceursParPays' doit contenir les résultats concaténés pour les 3 pays, avec une colonne '_GROUPID_' permettant de filtrer les résultats. On s'attend à trouver plusieurs points d'articulation pour chaque pays, validant le bon fonctionnement du traitement 'groupBy'.