Publié le :
Data Management CREATION_INTERNE

Génération de Jeux de Données de Test (JES)

Ce code est également disponible en : Deutsch English Español
En attente de validation
Ce script crée une série de tables dans la bibliothèque 'JES' pour des besoins de tests ou de démonstration. Il utilise différentes méthodes : saisie directe (DATALINES) pour les contacts, boucles arithmétiques pour des distributions statistiques (Poisson), et génération aléatoire (RANUNI, RANPOI) pour simuler des données opérationnelles (unités, échecs, taux). Il inclut également des transformations ultérieures avec la fonction LAG pour simuler des dépendances entre lignes et une procédure de tri.
Analyse des données

Type : CREATION_INTERNE


Toutes les données sont générées au sein du script via DATALINES, des boucles de génération ou des fonctions aléatoires (RANUNI, RANPOI).

1 Bloc de code
DATA STEP Data
Explication :
Création de la table JES.Contacts avec des données statiques fournies via DATALINES.
Copié !
1DATA JES.Contacts;
2 INPUT Name $15. City $10. State $5. Number $15.;
3 DATALINES;
4John X. Doe Lodi nj 201-555-O123
5Mary Murphy San Jose CA 408.555.678
6;
7RUN;
2 Bloc de code
DATA STEP Data
Explication :
Création de la table JES.TimeStamp contenant des chaînes de caractères représentant des dates/heures.
Copié !
1DATA JES.TimeStamp;
2 Time = "Tue Apr 03 08:25:00 MST 2004"; OUTPUT;
3 Time = "Tue Mar 26 17:52:31 MST 2004"; OUTPUT;
4 Time = "Tue Jun 03 08:25:00 MDT 2004"; OUTPUT;
5RUN;
3 Bloc de code
DATA STEP Data
Explication :
Génération de données statistiques (Distribution de Poisson) utilisant les fonctions CDF et PDF dans une boucle.
Copié !
1DATA JES.Poisson;
2 DO K = 0 TO 5;
3 F = CDF('POISSON', K, 5);
4 P = PDF('POISSON', K, 5);
5 OUTPUT;
6 END;
7RUN;
4 Bloc de code
DATA STEP Data
Explication :
Simulation de données d'unités (JES.Units) avec numéros de série et dates d'installation aléatoires via RANUNI.
Copié !
1DATA JES.Units; FORMAT SN $4. Install MMDDYY10.;
2 SEED=12345;
3 DO I=1 TO 10;
4 CALL RANUNI(SEED, X); CALL RANUNI(SEED, Y); CALL RANUNI(SEED, Z);
5 SN=put(FLOOR(99*X), Z4.0);
6 Install = '01JUN2006'd + ROUND(21*Y);
7 Loc ="CA"; IF Z<.45 THEN Loc="NY";
8 OUTPUT;
9 END;
10 DROP i X Y Z SEED;
11RUN;
5 Bloc de code
DATA STEP Data
Explication :
Modification de JES.Units pour introduire des duplicatas ou des valeurs décalées en utilisant la fonction LAG3 sur le numéro de série.
Copié !
1DATA JES.Units; SET JES.Units;
2 L=LAG3(SN);
3 IF _N_ in (4,6,8) THEN SN=L;
4 DROP L;
5RUN;
6 Bloc de code
DATA STEP Data
Explication :
Simulation de données d'échecs (JES.Fails) avec des dates et localisations aléatoires.
Copié !
1DATA JES.Fails; FORMAT SN $4. Fail MMDDYY10. Loc $6.;
2 SEED=12345;
3 DO I=1 TO 10;
4 CALL RANUNI(SEED, X); CALL RANUNI(SEED, Y); CALL RANUNI(SEED, Z);
5 SN=put(FLOOR(99*X), Z4.0);
6 Fail = '01JUL2006'd + FLOOR(90*Y);
7 Loc ="Top"; IF Z<.45 THEN Loc="Bottom";
8 OUTPUT;
9 END;
10 DROP i X Y Z SEED;
11RUN;
7 Bloc de code
DATA STEP Data
Explication :
Filtrage et modification de JES.Fails : suppression de certaines lignes (4, 8, 10) et modification de la ligne 5 via LAG4.
Copié !
1DATA JES.Fails; SET JES.Fails; L=Lag4(SN);
2 IF _N_=5 THEN SN=L;
3 IF _N_ NE 4; IF _N_ NE 8; IF _N_ NE 10;
4 DROP L;
5RUN;
8 Bloc de code
PROC SORT
Explication :
Tri de la table JES.Fails par date d'échec.
Copié !
1PROC SORT DATA=JES.Fails; BY Fail; RUN;
9 Bloc de code
DATA STEP Data
Explication :
Génération de la table JES.Rates simulant des taux d'échec par fournisseur et région, utilisant RANPOI (loi de Poisson).
Copié !
1DATA JES.Rates;
2 FORMAT Vendor $15. GEO $4. QTR $2. Rate 8.4 Test 8.0; SEED=12345;
3 Vendor = "ChiTronix"; GEO = "APAC"; Test = 5000;
4 DO i=1 TO 4; QTR="Q"||PUT(i, 1.0); Fail=RANPOI(SEED, .05*Test); OUTPUT; END;
5 Vendor = "Duality"; GEO = "EMEA"; Test = 1000; Fail = 7;
6 DO i=2 TO 4; QTR="Q"||PUT(i, 1.0); Fail=RANPOI(SEED, .02*Test); OUTPUT; END;
7 Vendor = "Empirical"; GEO="AMER"; Test = 7000; Fail = 100;
8 DO i=1 TO 3; QTR="Q"||PUT(i, 1.0); Fail=RANPOI(SEED, .01*Test); OUTPUT; END;
9RUN;
10 Bloc de code
DATA STEP Data
Explication :
Calcul final du taux d'échec (Rate) dans la table JES.Rates.
Copié !
1DATA JES.Rates; SET JES.Rates; FORMAT Rate percent8.2;
2 IF Test>0 THEN Rate=Fail/Test;
3 drop SEED i;
4RUN;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.

Documentation liée : Data Management

Sujet / Mot-cléLien vers la ressource
DOC Formats définis par l'utilisateur fr/sampleCode/FORMAT4C19
Banner
Le Conseil de l'Expert
Expert
Stéphanie
Spécialiste Machine Learning et IA.
« La création de jeux de données de test (JES) performants repose sur un équilibre entre données déterministes et générations stochastiques. En utilisant des fonctions de distribution comme PDF ou CDF pour les lois de Poisson, vous assurez une cohérence statistique à vos modèles. Pour simuler des comportements opérationnels réalistes, l'usage des fonctions de génération aléatoire (RANUNI, RANPOI) combiné à la fonction LAG est une technique avancée : elle permet de créer artificiellement des dépendances temporelles ou des doublons de série (comme des numéros de série récurrents). N'oubliez jamais de fixer une graine (SEED) lors de vos appels aléatoires pour garantir la reproductibilité de vos tests. »