2 votes

Requêtes SAS programmées automatiquement

J'exécute quelques requêtes SAS chaque mois et elles prennent toutes un temps assez long à s'exécuter. Je me demandais s'il était possible de les programmer pour qu'elles soient exécutées à une certaine date chaque mois, dans un certain ordre.

Merci pour votre aide !

3voto

Robbie Liu Points 935

Selon le système avec lequel vous travaillez, les méthodes peuvent être différentes.

L'idée principale est que vous pouvez stocker toutes les requêtes dans un fichier de traitement SAS, puis utiliser le planificateur du système (par exemple, le planificateur de tâches de Windows) pour les exécuter chaque mois.

Une aide rapide (pour Windows) : http://analytics.ncsu.edu/sesug/2006/CC04_06.PDF

3voto

orh Points 1034

Sous Unix, vous pouvez configurer les programmes pour qu'ils soient exécutés en mode batch avec une tâche cron.

Une astuce que vous pourriez utiliser serait de mettre en place un programme SAS maître pour tout exécuter. Créez un programme qui contient simplement toutes les variables globales qui doivent être modifiées chaque mois, puis appelez vos programmes mensuels avec des includes. quelque chose comme :

%let globalvar1 = ThisMonth;
%let globalvar2 = LastMonth;

%include '/path/to/sas/program1';
%include '/path/to/sas/program2';

Ensuite, vous n'exécutez que ce seul programme par lots... il les exécutera dans l'ordre correct et attendra automatiquement qu'ils aient fini de s'exécuter avant de passer au programme suivant (la mise en place de tâches cron distinctes vous obligerait à surestimer la durée de chacune d'elles pour éviter tout conflit).

Cela va tout regrouper dans un seul fichier journal... ce qui peut être bon ou mauvais. Une autre option serait d'utiliser X pour appeler le programme depuis l'OS à chaque exécution.

Je ne suis pas sûr à 100% de la syntaxe, mais cela devrait fonctionner si vous utilisez la bonne syntaxe pour votre système d'exploitation (cela pourrait fonctionner sous unix ou Windows et vous n'auriez à programmer qu'un seul programme).

A la fin de chaque programme, il suffit d'ajouter :

X "Path/to/sas.exe" -batch -noterminal nextProgram.sas

Cela vous permettra d'enchaîner les programmes de manière à ce qu'ils lancent le programme suivant après leur achèvement. Il suffit ensuite d'utiliser le planificateur de tâches/cron pour lancer "sas.exe -batch -noterminal firstProgram.sas".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X