Déposer une table dans SAS
Ce qui est le plus efficace façon de supprimer une table dans le SAS?
J'ai un programme qui boucle et supprime un grand nombre de tables, et voudrais savoir si il y a une différence de performance entre les PROC SQL; PROC DATASETS; pour la suppression d'une seule table à la fois..
Ou si il y a une autre façon, peut-être???
source d'informationauteur Allan Bowe
Vous devez vous connecter pour publier un commentaire.
S'il est raisonnable de confier à l'OS, qui pourrait être plus rapide. Sinon, mon scientifique, les observations semblent indiquer que la baisse de table en
proc sql
est la plus rapide. Ce qui m'a surpris, comme je m'y attendaisproc datasets
à être le plus rapide.Dans le code ci-dessous, j'ai créer 4000 mannequin d'ensembles de données, puis essayez de supprimer tous avec des méthodes différentes. La première est avec sql et sur mon système a fallu environ 11 secondes pour supprimer les fichiers.
Les deux à la fois utiliser
proc datasets
. La première crée une instruction delete pour chaque ensemble de données, puis les supprime. Le deuxième, juste problèmes de une couverture de commande kill pour supprimer tout ce qui dans le répertoire de travail. (J'avais prévu que cette technique soit la plus rapide). Les deux proc datasets routines rapporté environ 20 secondes pour supprimer tous les 4000 fichiers.J'ai essayé de jouer avec le système d'exploitation-supprimer approche.
La suppression avec le X-commande peut ne pas être recommandé. Il a fallu jamais!
J'ai ensuite essayé avec le système de commande dans un datastep:
Comme vous pouvez le voir, j'ai dû couper mes supprime en 9 séparé supprimer des commandes. La raison en est, je suis en utilisant des caractères génériques, "*", et le sous-jacent système d'exploitation (AIX) s'étend à une liste, qui devient alors trop grand pour qu'il à manipuler...
Le programme fondamentalement construit une commande de suppression pour chacun des neuf groupes de fichiers "temp[1-9]*.sas7*" et les enjeux de la commande.
À l'aide de la créer une macro-fonction de cmjohns répondre à créer 4000 tableaux de données, je peux supprimer ceux en seulement 5 secondes à l'aide de cette approche.
Donc directement du système d'exploitation à supprimer est le moyen le plus rapide pour supprimer en masse, comme je m'y attendais.
Nous discutons des tables ou des ensembles de données?
Tables implique tables de base de données. Pour se débarrasser de ces dans une voie rapide, à l'aide de proc SQL pass-through facilité serait le plus rapide. Spécifiquement si vous pouvez vous connecter à la base de données une fois et supprimer toutes les tables, puis de le déconnecter.
Si nous discutons ensembles de données dans SAS, je dirais que les deux proc sql et proc datasets sont très similaires. À partir d'une application point de vue, ils vont tous les deux par la même déduction pour créer un système de commande qui supprime un fichier. Tous les tests que j'ai vu de SAS groupes d'utilisateurs ou des présentations ont toujours suggéré que l'utilisation d'une méthode par rapport à l'autre est marginal et basée sur de nombreuses variables.
Si il est impératif que vous avez l'absolu moyen le plus rapide pour déposer les ensembles de données /tables, vous n'avez qu'à le tester. Chaque installation et le paramétrage de SAS sont suffisamment différentes pour justifier le test.
En termes de ce qui est plus rapide, à l'exclusion des données extrêmement volumineux, je parie qu'il y a peu de différence entre eux.
Lors de la manipulation permanente SAS ensembles de données, cependant, je tiens à utiliser PROC DATASETS plutôt que de PROC SQL, tout simplement parce que je me sens mieux la manipulation permanente des ensembles de données à l'aide de la SAS-conçu méthode, et non pas le SQL de mise en œuvre
Solution Simple pour les tables temporaires qui sont nommés de la même façon:
Si tous vos tables démarrer avec le même préfixe, par exemple p1_table1 et p1_table2, puis le code suivant supprime tous les table avec, qui commence avec p1
proc datasets;
delete p1: ;
run;
proc supprimer en est une autre, quoique sans-papiers, la solution..
http://www.sascommunity.org/wiki/PROC_Delete