activeLearn alJoin

Leistungs-/Volumentest: Abgleich eines großen Transaktionsstroms mit einer Beobachtungsliste

Scénario de test & Cas d'usage

Geschäftskontext

Ein Finanzinstitut verarbeitet Millionen von Transaktionen. Es unterhält eine 'Beobachtungsliste' von Kontonummern, die untersucht werden. Ziel ist es, alle eingehenden Transaktionen, die von einem beobachteten Konto stammen, effizient zu kennzeichnen. Ein INNER JOIN ist hier ideal, da uns nur die Transaktionen interessieren, die mit der Beobachtungsliste übereinstimmen. Wir testen auch den `logLevel`-Parameter, um den Fortschritt bei einem großen Join zu überwachen.
Über das Set : activeLearn

Aktives Lernen zur Optimierung der Datenkennzeichnung.

Entdecken Sie alle Aktionen von activeLearn
Datenaufbereitung

Erstellt eine sehr große Transaktionstabelle (TRANSAKTIONEN) und eine kleine Beobachtungsliste (BEOBACHTUNGSLISTE).

Kopiert!
1DATA casuser.TRANSAKTIONEN;
2 DO TransaktionsID = 1 to 1000000;
3 KontoNummer = 'DE' || put(floor(rand('UNIFORM')*1000), z10.);
4 Betrag = round(rand('UNIFORM')*10000, .01);
5 OUTPUT;
6 END;
7RUN;
8 
9DATA casuser.BEOBACHTUNGSLISTE;
10 LENGTH Grund $20;
11 INPUT KontoNummer $ Grund $;
12 CARDS;
13DE0000000123 Geldwaesche
14DE0000000456 Sanktionen
15DE0000000789 Betrugsverdacht
16;
17RUN;

Étapes de réalisation

1
Ausführen eines INNER JOIN, um nur Transaktionen von Konten auf der Beobachtungsliste zu isolieren. `logLevel=1` wird verwendet, um Start- und Endmeldungen zu erhalten.
Kopiert!
1PROC CAS;
2 activeLearn.alJoin /
3 TABLE={name='TRANSAKTIONEN', caslib='casuser'},
4 annotatedTable={name='BEOBACHTUNGSLISTE', caslib='casuser'},
5 id='KontoNummer',
6 joinType='INNER',
7 logLevel=1,
8 casOut={name='VERDAECHTIGE_TRANSAKTIONEN', caslib='casuser', replace=true};
9RUN;
10QUIT;
2
Überprüfung der Anzahl der gefundenen verdächtigen Transaktionen.
Kopiert!
1PROC CAS;
2 TABLE.numRows /
3 TABLE={name='VERDAECHTIGE_TRANSAKTIONEN'};
4RUN;
5QUIT;

Erwartetes Ergebnis


Die Ausgabetabelle 'VERDAECHTIGE_TRANSAKTIONEN' enthält nur die Zeilen aus der Transaktionstabelle, deren 'KontoNummer' in der 'BEOBACHTUNGSLISTE' vorhanden ist. Das CAS-Log sollte Start- und Endmeldungen für die `alJoin`-Aktion anzeigen, was die Funktionalität von `logLevel=1` bestätigt. Die Anzahl der Zeilen in der Ausgabetabelle sollte der Anzahl der Transaktionen entsprechen, die von den drei beobachteten Konten getätigt wurden (ungefähr 1000000 / 1000 * 3 = ~3000 Zeilen).