partition
Description
L'action table.partition permet de partitionner (et éventuellement trier) une table en mémoireGemini said
Espace de stockage temporaire (RAM) utilisé par le moteur CAS pour charger et traiter les données à haute vitesse, minimisant les accès disque pour optimiser les performances de SAS Viya. dans SAS Viya. Le partitionnement est crucial pour les performances des modèles d'apprentissage automatique et l'agrégation de données distribuées (parce que personne n'aime attendre des heures pour un 'group by'). Attention toutefois, une table partitionnée et triée refuse catégoriquement qu'on lui ajoute des lignes par la suite (pas de 'append' !) !
Paramètres Clés
Préparation des données
Création de données d'exemple
On crée une petite table de ventes avec des dates et des commerciaux pour tester le partitionnement dans notre espace de travail.
| 1 | DATA casuser.ventes; |
| 2 | INPUT commercial $ mois ventes_montant; |
| 3 | DATALINES; |
| 4 | Jean 1 1500 |
| 5 | Marie 1 2000 |
| 6 | Jean 2 1200 |
| 7 | Marie 2 2500 |
| 8 | Paul 1 900 |
| 9 | Paul 2 1100 |
| 10 | ; |
| 11 | RUN; |
Exemples d'utilisation
Partitionnement basique par commercial
Cet exemple divise la table selon la variable `commercial`. Utile pour préparer les données avant un calcul par groupe performant.
| 1 | PROC CAS; |
| 2 | TABLE.partition / |
| 3 | TABLE={name="ventes", caslib="casuser", groupBy={"commercial"}} |
| 4 | casout={name="ventes_part", caslib="casuser", replace=true}; |
| 5 | RUN; |
| 6 | QUIT; |
Résultat Attendu :
Partitionnement, Tri et calcul à la volée
Ici, on sort l'artillerie lourde : on partitionne par `commercial`, on trie par `mois` au sein de chaque partition, et on crée une variable `bonus` à la volée. On capture aussi le temps de traitement pour voir qui est le plus rapide !
| 1 | PROC CAS; |
| 2 | TABLE.partition RESULT=res STATUS=rc / |
| 3 | TABLE={ |
| 4 | name="ventes", |
| 5 | caslib="casuser", |
| 6 | groupBy={"commercial"}, |
| 7 | orderBy={{name="mois"}}, |
| 8 | computedVars={{name="bonus"}}, |
| 9 | computedVarsProgram="bonus = ventes_montant * 0.1;" |
| 10 | } |
| 11 | casout={ |
| 12 | name="ventes_opti", |
| 13 | caslib="casuser", |
| 14 | replace=true, |
| 15 | compress=true, |
| 16 | replication=0 |
| 17 | }; |
| 18 | PRINT res; |
| 19 | RUN; |
| 20 | QUIT; |