table

append

##set_table ##data_management

Description

L'action table.append est la méthode moderne et distribuée pour concaténer des tables dans SAS Viya (l'équivalent dopé aux stéroïdes de PROC APPENDProcédure SAS utilisée pour ajouter les observations d'un jeu de données à la fin d'un autre. Sur Viya, elle permet de consolider efficacement des tables sans reconstruire l'intégralité du fichier.). Elle permet d'ajouter les lignes d'une table source directement dans une table cible résidant déjà en mémoire. C'est parfait pour l'ingestion incrémentale de données, comme empiler vos nouvelles factures mensuelles sans avoir à recharger tout l'historique (ce qui ferait pleurer votre serveur).

Syntaxe Officielle
proc cas;
table.append /
source={
caslib="string",
name="table-name",
singlePass=true | false,
where="where-expression",
dataSourceOptions={key=value}
}
target={
caslib="string",
name="table-name"
};
quit;

Paramètres Clés

Nom du paramètre Description
source Spécifie la table d'entrée contenant les données à ajouter. Inclut des sous-paramètres comme 'name' (nom de la table), 'caslib', et 'where' pour filtrer la donnée avant l'ajout.
target Spécifie la table en mémoire cible qui va recevoir les données. Attention, cette table doit obligatoirement déjà exister en mémoire CAS.
singlePass (Optionnel dans source) Si true, évite la création d'une table temporaire sur le serveur pour une exécution plus rapide, bien que l'ordre des lignes ajoutées ne soit pas garanti.

Préparation des données

Création des données de test

Avant d'ajouter des lignes, il nous faut une table cible (notre historique) et une table source (nos nouvelles données) en mémoire CAS.

1PROC CAS; TABLE.loadTable / caslib="casuser" path="historique.sashdat" casout={name="table_cible", caslib="casuser"}; TABLE.loadTable / caslib="casuser" path="nouveau_mois.csv" casout={name="table_source", caslib="casuser"}; RUN; QUIT;

Exemples d'utilisation

Concaténation basique

Cet exemple illustre l'usage le plus simple de table.append en ajoutant toutes les lignes de la table source à la table cible.

1PROC CAS; TABLE.append / SOURCE={name="table_source", caslib="casuser"} target={name="table_cible", caslib="casuser"}; RUN; QUIT;
Résultat Attendu :
La table 'table_cible' contient maintenant ses propres lignes suivies de toutes les lignes de 'table_source'.
Append avancé avec filtrage et optimisation

Ici, nous ajoutons uniquement les lignes pertinentes (par exemple, les ventes validées) à l'aide du paramètre 'where'. Nous utilisons également 'singlePass=true' pour optimiser la mémoire, car créer une table temporaire pour un simple ajout, c'est surfait !

1PROC CAS; TABLE.append / SOURCE={name="table_source", caslib="casuser", where="Statut = 'Valide'", singlePass=true} target={name="table_cible", caslib="casuser"}; RUN; QUIT;
Résultat Attendu :
Seules les lignes répondant à la condition WHERE sont ajoutées de manière optimisée à la table cible en mémoire.