jueves, 25 de julio de 2019

Llamar a Phyton desde SAS

Desde la versión SAS 9.4M6 (Junio 2019) es posible llamar a funciones escritas en Phyton desde un programa SAS empleando el procedimiento PROC FCMP. Este procedimiento es el compilador de funciones de SAS y se puede utilizar para crear funciones en SAS.

La forma habitual de crearlas es con código SAS, pero desde la última release es posible definir también funciones en Phyton indicando el interprete que debe usar. Podemos utilizarlos desde SAS Studio o SAS Enterprise Guide haciendo la llamada desde un programa SAS Base.




Encontramos ejemplos detallados en este link: https://blogs.sas.com/content/sgf/2019/06/04/using-python-functions-inside-sas-programs/?utm_source=linkedin_company&utm_medium=social-sprinklr&utm_content=2496387196&utm_term=2496387196


Esta nueva funcionalidad nos permite usar ambos lenguajes a la vez. En la plataforma SAS Viya hay también diferentes formas de hacerlo.

Más info: Datademy

martes, 4 de junio de 2019

El tiempo pasa...

El otro día me preguntaron cuánto tiempo llevo trabajando con datos. Una imagen vale más que mil palabras:


miércoles, 20 de febrero de 2019

Opciones depuración lenguaje macro

El trabajo con macros de SAS implica el manejo de macrovariables y de estructuras de control condicionales e iterativas, así como la gestión de pasos data o procedimientos que interactúan con lenguaje macro.




Son de gran utilidad las siguientes opciones para realizar este seguimiento:
  • symbolgen: muestra el valor que toma cada macrovariable cuando se la referencia
  • mprint: muestra el código del paso data o del procedimiento que una vez resuelto el código macro que incorpora.
  • mlogic: log relativo a las estructuras de control en lenguaje macro (condicionales y bucles)
Para activar estas opciones:
options symbolgen mprint mlogic;
A continuación una muestra del log con estas opciones activadas:


domingo, 14 de octubre de 2018

proc sql vs data step

Con frecuencia trabajando con SAS nos planteamos la diferencia entre usar el procedimiento proc sql frente a un paso data (data step). Existen importantes diferencias en su plan de ejecución y es conveniente conocer cuál es más apropiado para cada caso.
El  paso data se ejecuta registro a registro utilizando el PDV (program data vector) , utiliza un buffer de entrada y de salida desde donde escribe a la tabla de salida.

Fuente: www.sas.com
En el proc sql primero se ejecuta el optimizador de queries, después de sube la tabla a memoria y después se realizan los cálculos sobre la tabla completa. El resultado se escribe en la tabla de salida

                                                                                                                         Fuente: www.sas.com
Es habitual plantearse en qué casos utilizar un proc sql y en qué casos utilizar un paso data. No existe una regla general, pero si existen casos en los que uno puede ser más eficiente que el otro.

PASO DATA:
  •  Pasos que generan múltiples tablas de salida
  •  Pasos de lectura de fichero externo
  •  Pasos que precisan operaciones por grupo (first, last) u operaciones en primera fila (_N_)
  •  Pasos con muchos campos calculados o lógica de negocio compleja
  •  Procesado de tablas grandes
  •  Pasos que precisen uso de arrays
  •  Pasos que precisan de una salida selectiva (if + output)
 PROC SQL:
  •  Cuando se necesiten generar un proceso "transportable“ o en un lenguaje más genérico
  •  Pasos conoperaciones de joins, salvo masivos (hash o format) o varias tablas de salidas (merge)
  •  Pasos que precisen de acceder directamente a BBDD
  •  Pasos que acceden a tablas del diccionario 
  •  Procesado de tablas pequeñas

viernes, 7 de septiembre de 2018

SAS JSON engine

Mostramos en este post un sencillo ejemplo de uso del SAS JSON engine que nos va a permitir tratar ficheros JSON en SAS.

sas json engine
Vamos a tratar de leer un sencillo fichero:

El uso del libname JSON nos va a permitir pasar el contendido del fichero a tablas SAS dentro de la librería que asignemos. El código es el siguiente:


/* fichero json */
filename fichjs "/home/ficheros/localizaciones.json";

/* librería json  */
libname libjs JSON fileref=fichjs;

data localizaciones;
set libjs.localizaciones;
run;

La librería libjs contiene las tablas mapeadas:

La tabla localizaciones:


Vemos, por tanto, que el uso de el motor de librerías JSON facilita mucho el trabajo con este tipo de ficheros

Formación SAS


jueves, 30 de agosto de 2018

Proc SQL en SAS: plan de ejecución


SAS permite monitorizar los procesos proc SQL ejecutados. De forma similar a un SGBD muestra un plan de ejecución de las sentencias SQL que nos permite analizar y mejorar la ejecución de las mismas.



Para ello es necesario añadir el modificador _method a las sentencias proc sql.SAS muestra la secuencia de ejecución y utiliza abreviaturas para referirse a las distintas operaciones realizadas sobre las tablas.


  • SqxCRTA Create table as select
  • SqxSLCT Select
  • SqxJSL Step loop join (Cartesian)
  • SqxJM Merge Join
  • SqxINDX Index Join
  • SqxHASH Hash Join
  • SqxSORT Sort
  • SqxSRC Source rows from table
  • SqxFIL Filter rows
  • SqxSUMG Summary stats with group by
  • SqxSUMM Summary stats with NO group by

Ejemplo:
proc sql _method;
create table prueba2 as
(select * from prueba1 where hc_venta >= 5 );
quit;
NOTE: SQL execution methods chosen are:
sqxcrta
sqxsrc( WORK.PRUEBA1 )
proc sql _method;
create table prueba3 as
(select cod_articulo, sum(hc_venta) as ag_venta
from prueba1
group by cod_articulo);
quit;
NOTE: SQL execution methods chosen are:
sqxcrta
    sqxsumg
        sqxsort
            sqxsrc( WORK.PRUEBA1 )

Formación SAS

martes, 17 de julio de 2018

Acceder a un bucket S3 de Amazon desde SAS

Cada vez los orígenes de datos en nuestros análisis son más diversos. En esta ocasión compartimos un link que explica como conectarse a el almacenamiento S3 de Amazon empleando el procedimiento PROC S3 que esrá disponible desde la release m5 de SAS 9.4. Es necesario crear un fichero de configuración con las claves de acceso a S3.



Acceder a un bucket S3 desde SAS

Formación SAS