aggregation aggregate

Détection d'activités suspectes par agrégation de transactions financières à haute fréquence

Scénario de test & Cas d'usage

Contexte Métier

Une institution financière doit analyser un très grand volume de transactions par carte de crédit pour identifier des schémas de fraude potentiels, comme le 'card testing' (plusieurs petites transactions dans un court laps de temps). Le test vise à agréger des millions de transactions par carte et par heure pour compter le nombre d'opérations et leur somme.
À propos du Set : aggregation

Agrégation de données et calculs statistiques sommaires.

Découvrir toutes les actions de aggregation
Préparation des Données

Génération d'une table volumineuse (1 million de transactions) simulant des opérations par carte de crédit, avec des schémas spécifiques à détecter.

Copié !
1DATA casuser.transactions_volumineuses(keep=id_carte montant ts);
2informat ts datetime20.;
3FORMAT ts datetime20.;
4DO i = 1 to 1000000;
5 id_carte = ceil(rand('UNIFORM') * 50000);
6 montant = round(rand('UNIFORM') * 200, 0.01);
7 ts = '01JAN2023:00:00:00'dt + (i * 2);
8 OUTPUT;
9END;
10/* Ajout d'un cas de fraude à tester */
11DO i = 1 to 5;
12 id_carte = 99999;
13 montant = i;
14 ts = '10JAN2023:14:30:00'dt + (i * 60); /* 5 transactions en 5 minutes */
15 OUTPUT;
16END;
17RUN;

Étapes de réalisation

1
Agrégation des transactions volumineuses par carte et par heure pour calculer le nombre de transactions (N) et la somme des montants (SUM).
Copié !
1PROC CAS;
2 aggregation.aggregate /
3 TABLE={name='transactions_volumineuses', groupBy={'id_carte'}},
4 id='ts',
5 interval='HOUR',
6 varSpecs={
7 {name='montant', agg='N', columnNames={'Nb_Transactions'}},
8 {name='montant', agg='SUM', columnNames={'Total_Montant'}}
9 },
10 casOut={name='agregat_fraude_horaire', replace=true};
11RUN;
12QUIT;
2
Filtrage de la table agrégée pour identifier les cas suspects (plus de 3 transactions dans l'heure).
Copié !
1PROC CAS;
2 TABLE.filter /
3 TABLE={name='agregat_fraude_horaire', where='Nb_Transactions > 3'},
4 casOut={name='cartes_suspectes', replace=true};
5RUN;
6QUIT;

Résultat Attendu


L'action 'aggregate' traite efficacement la table volumineuse et crée la table 'agregat_fraude_horaire'. La seconde étape filtre cette table pour produire 'cartes_suspectes', qui isole les cartes ayant un comportement anormal. Le scénario valide la capacité de l'action à gérer une charge de travail importante et à produire un résultat intermédiaire essentiel pour un processus de détection de fraude.