es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Sas Macros para programar la ejecución quincenal del programa

Tengo un código proc sql que necesita ejecutarse dos veces al mes, el 1º y el 16º.
Hay una cláusula where en el proc sql.
Cuando el informe se ejecuta, por ejemplo, el 1º de enero de 2022, la cláusula where filtra los registros que se encuentran entre el 16 de diciembre de 2021 y el 31 de diciembre de 2021.
Y cuando el informe se ejecuta el 16 de enero de 2022, la cláusula where filtra los registros que se encuentran entre el 1º de enero de 2022 y el 15 de enero de 2022.

He estado actualizando manualmente estos filtros cada vez que lo ejecuto, pero ahora necesito automatizarlo. Debe haber solo una programación, que verifique la fecha de ejecución del informe y establezca la cláusula where correspondientemente.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para automatizar el código proc sql, puedes usar una macro variable y declaraciones condicionales basadas en la fecha actual.

    1. Crea una macro variable para almacenar la cláusula where:
    %let where_clause = ;
    
    1. Utiliza las funciones %SYSFUNC e INTNX para determinar la fecha actual y establecer la cláusula where correspondientemente:
    %if %sysfunc(today()) <= %sysfunc(intnx(day, %sysfunc(today()), -16)) %then
        %let where_clause = where date_variable ge '16DEC2021'd and date_variable le '31DEC2021'd;
    %else
        %let where_clause = where date_variable ge '01JAN2022'd and date_variable le '15JAN2022'd;
    
    1. Reemplaza la cláusula where en el código proc sql con la macro variable:
    proc sql;
        select * from dataset_name
        &where_clause.;
    quit;
    
    1. Configura una programación para ejecutar el código el 1 y el 16 de cada mes. El código ajustará automáticamente la cláusula where basándose en la fecha actual.

Comments are closed.