groupByInfo
Description
L'action technique simple.groupByInfo est une véritable pépite pour les data scientistsExperts extrayant des connaissances via des méthodes statistiques, algorithmes et IA. Ils transforment les données brutes en insights stratégiques pour résoudre des problèmes métier complexes.. Elle permet de calculer l'indexStructure de données accélérant la lecture des lignes d'une table en ciblant directement les valeurs des colonnes indexées, réduisant ainsi les entrées/sorties disque et le temps de traitement. et la fréquence de chaque groupe au sein d'une table, ainsi que la position (indexStructure de données accélérant la lecture des lignes d'une table en ciblant directement les valeurs des colonnes indexées, réduisant ainsi les entrées/sorties disque et le temps de traitement.) de chaque enregistrement dans son groupe. C'est l'outil parfait pour préparer des données partitionnéesLes données partitionnées sont des tables divisées en blocs (segments) distribués sur les nœuds d'un cluster CAS pour permettre un traitement massivement parallèle et accélérer les calculs., analyser la distribution de classesLa distribution de classes représente la proportion relative de chaque catégorie cible dans un jeu de données, permettant de détecter un éventuel déséquilibre impactant la performance du modèle. ou amorcer des modèles prédictifsAlgorithmes entraînés sur SAS Viya pour analyser des données historiques et estimer la probabilité de résultats futurs, facilitant ainsi la prise de décision proactive et automatisée. (oui, on fait les choses bien ici !). Les performances peuvent être optimisées grâce à l'utilisation de l'option algorithm2 pour un traitement parallèle massif sur les grilles contenant un très grand nombre de groupes.
Paramètres Clés
| Nom du paramètre | Description |
|---|---|
| table | Spécifie la table d'entrée (CASTable) contenant les données à analyser. C'est ici que l'on définit l'argument clé groupBy. |
| casOut | Définit les paramètres de la table de sortie en mémoire CAS (nom, remplacement, promotion). |
| inputs | Liste des variables d'entrée supplémentaires à utiliser pour l'analyse et à inclure dans la table de sortie. |
| generatedColumns | Indique quelles colonnes techniques générées (comme FREQUENCY, GROUPID, POSITION) doivent être incluses dans le résultat. |
| includeDuplicates | Détermine si la table de sortie doit conserver tous les enregistrements dupliqués (TRUE) ou juste une ligne par groupe (FALSE). |
| algorithm2 | Active un algorithme alternatif optimisé pour le traitement distribué massif. Particulièrement efficace quand on a un grand nombre de groupes sur de multiples nœuds de travail. |
| sparse | Optimise le traitement sur un serveur distribué en forçant chaque thread à ne lire que quelques groupes. Magique pour traiter des dimensions très éparses ! |
| details | Spécifie si des messages détaillés comme le nombre de groupes doivent être inscrits dans le journal (log) SAS. |
Préparation des données
Chargement des données de référence
Nous allons utiliser la célèbre table sashelp.cars pour avoir une bonne base de données avec différentes catégories à grouper.
| 1 | PROC CASUTIL; |
| 2 | load DATA=sashelp.cars casout='cars' replace; |
| 3 | RUN; |
| 4 | QUIT; |
Exemples d'utilisation
Calcul basique des identifiants et fréquences de groupes
Dans cet exemple, on regroupe simplement les véhicules par origine (Origin). L'action générera toutes les colonnes de diagnostic par défaut.
| 1 | PROC CAS; |
| 2 | SIMPLE.groupByInfo / |
| 3 | TABLE={name='cars', groupBy={'Origin'}} |
| 4 | casOut={name='cars_groupinfo', replace=True} |
| 5 | generatedColumns={'ALL'}; |
| 6 | RUN; |
| 7 | QUIT; |
Résultat Attendu :
Utilisation avancée avec Algorithm2, filtres et nommage sur-mesure
Passons aux choses sérieuses ! On combine plusieurs colonnes de regroupement, on active l'algorithme de haute performance, et on personnalise les noms des colonnes de métadonnées pour que la table de sortie soit immédiatement présentable.
| 1 | PROC CAS; |
| 2 | SIMPLE.groupByInfo / |
| 3 | TABLE={name='cars', groupBy={'Make', 'Type'}} |
| 4 | inputs={'MSRP', 'Invoice'} |
| 5 | casOut={name='cars_detailed_info', replace=True} |
| 6 | algorithm2=True |
| 7 | includeMissing=True |
| 8 | generatedColumns={'GROUPID', 'FREQUENCY'} |
| 9 | groupIDName='Identifiant_Groupe' |
| 10 | frequencyName='Frequence_Du_Groupe' |
| 11 | details=True; |
| 12 | RUN; |
| 13 | QUIT; |