table append

Ingestion à haute performance de données de capteurs IoT avec 'singlePass'

Scénario de test & Cas d'usage

Contexte Métier

Une usine de fabrication doit agréger de grands volumes de données provenant de capteurs de machines dans une table historique centrale. L'opération doit être la plus rapide possible pour minimiser la latence, car les lots de données arrivent toutes les 10 minutes.
À 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 historique 'capteurs_historique' déjà conséquente et un nouveau lot de données volumineux 'capteurs_batch_recent' à l'aide de boucles pour simuler la volumétrie.

Copié !
1DATA casuser.capteurs_historique(promote=true);
2 DO i = 1 to 500000;
3 id_capteur = ceil(rand('UNIFORM')*100);
4 valeur = rand('NORMAL', 100, 5);
5 timestamp = datetime();
6 OUTPUT;
7 END;
8RUN;
9 
10DATA casuser.capteurs_batch_recent(promote=true);
11 DO i = 1 to 100000;
12 id_capteur = ceil(rand('UNIFORM')*100);
13 valeur = rand('NORMAL', 100, 5);
14 timestamp = datetime();
15 OUTPUT;
16 END;
17RUN;

Étapes de réalisation

1
Obtention du nombre de lignes initial dans la table historique.
Copié !
1PROC CAS;
2 TABLE.numRows / TABLE={caslib='casuser', name='capteurs_historique'};
3RUN;
4QUIT;
2
Exécution de l'action 'append' en mode 'singlePass' pour optimiser les performances sur une source de données potentiellement non-CAS (ici simulée).
Copié !
1PROC CAS;
2 TABLE.append /
3 SOURCE={name='capteurs_batch_recent', caslib='casuser', singlePass=TRUE},
4 target={name='capteurs_historique', caslib='casuser'};
5RUN;
6QUIT;
3
Vérification du nombre total de lignes après l'opération pour valider l'ajout complet.
Copié !
1PROC CAS;
2 TABLE.numRows / TABLE={caslib='casuser', name='capteurs_historique'};
3RUN;
4QUIT;

Résultat Attendu


L'action se termine avec succès. Le nombre de lignes final dans 'capteurs_historique' doit être de 600 000 (500 000 initiales + 100 000 du batch). L'utilisation de 'singlePass=TRUE' est validée pour ce cas d'usage de performance.