table append

Test de robustesse : la table source filtrée ne contient aucune ligne à ajouter

Scénario de test & Cas d'usage

Contexte Métier

Un processus automatisé de détection de fraude tente chaque nuit d'ajouter les transactions jugées 'critiques' (score > 95) à une table de suivi pour investigation manuelle. Le scénario teste le comportement du job les nuits où aucune transaction critique n'est détectée.
À propos du Set : table

Chargement, sauvegarde et gestion des tables en mémoire.

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

Crée une table cible 'investigations_fraude' et une table source 'transactions_nuit' qui ne contient que des transactions avec un score de fraude inférieur au seuil critique.

Copié !
1DATA casuser.investigations_fraude(promote=true);
2 LENGTH id_transaction $15 score_fraude 8.;
3 id_transaction = 'TXN_FRAUDE_001'; score_fraude = 98.2; OUTPUT;
4RUN;
5 
6DATA casuser.transactions_nuit(promote=true);
7 LENGTH id_transaction $15 score_fraude 8.;
8 id_transaction = 'TXN_NUIT_5823'; score_fraude = 45.1; OUTPUT;
9 id_transaction = 'TXN_NUIT_5824'; score_fraude = 78.9; OUTPUT;
10 id_transaction = 'TXN_NUIT_5825'; score_fraude = 12.3; OUTPUT;
11RUN;

Étapes de réalisation

1
Vérification de l'état initial de la table d'investigation.
Copié !
1PROC CAS;
2 TABLE.fetch / TABLE={caslib='casuser', name='investigations_fraude'};
3RUN;
4QUIT;
2
Tentative d'ajout en filtrant les transactions avec un 'score_fraude' supérieur à 95. Le filtre ne devrait sélectionner aucune ligne.
Copié !
1PROC CAS;
2 TABLE.append /
3 SOURCE={name='transactions_nuit', caslib='casuser', where='score_fraude > 95'},
4 target={name='investigations_fraude', caslib='casuser'};
5RUN;
6QUIT;
3
Contrôle final de la table cible pour s'assurer qu'elle n'a pas été modifiée.
Copié !
1PROC CAS;
2 TABLE.numRows / TABLE={caslib='casuser', name='investigations_fraude'};
3 TABLE.fetch / TABLE={caslib='casuser', name='investigations_fraude'};
4RUN;
5QUIT;

Résultat Attendu


L'action 'append' doit s'exécuter sans erreur, même si aucune ligne de la source ne correspond au critère du 'where'. La table 'investigations_fraude' doit conserver son état initial, avec exactement 1 ligne. Cela valide la robustesse du processus automatisé.