miércoles, 31 de enero de 2018

Cambios código


/* Unir ficheros */

/* Unión de ficheros */


filename f pipe "find &dir_entrada -type f "; 
data ficheros (keep = nom_fich_lec patron) ;
     length var $256;
     infile f length=reclen ;
     input var $varying256. reclen ;
nom_fich_lec = scan(var,-1,'/');
patron = compress("%"||&fecha_proc.||"%");
run;

/* filtro por los del día */
data ficheros (keep = nom_fich_lec);
set ficheros;
where nom_fich_lec like patron;
run;

%macro lec_e002(nom_fich_lec, sec, nom_fich);

%put LOG: Leyendo fichero: &nom_fich_lec ,secuencia &sec;
/*
DATA WORK.lec_&sec.;
LENGTH
        cod_contrato       8
        importe            8
        producto         $3
        tipo_oper        $2
        fecha              $8.;

    INFILE "&dir_entrada./&nom_fich_lec"
        DLM=';' DSD ;
    INPUT
        F1               :$10.
        F2               :$10.
        cod_contrato     : BEST9.
        F4               :$10.
        F5               :$10.
        importe          : BEST8.
        F7               :$10.
        producto       
        tipo_oper       
        fecha            : $8.
        F11              :$10.
        F12              :$10.
        F13              : $10.
        F14              : $10. ;
if cod_contrato ne .;
RUN;
*/

/*
%if &sec = 1 %then %do;
data WORK.&nom_fich.;
set WORK.lec_&sec.;
run;
%end;
%else %do;
proc append base=WORK.&nom_fich. new=WORK.lec_&sec.;
run;
%end;
*/

%mend;


%macro esc_e002(nom_fich);

/* Escribimos fichero unión */

%put llamada escribir;

/*
data _null_;
file "&dir_entrada./&nom_fich._&fecha_proc..csv" dlm = ';';
set &nom_fich;
put  F1 F2 cod_contrato F4 F5 importe F7 producto tipo_oper fecha F11 F12 F13 F14 ;           
run; 
*/

%mend;


%macro unir_ficheros(nom_fich);;

data fich_&nom_fich;
set ficheros;
where upcase(substr(nom_fich_lec,1,%length(&nom_fich))) = %upcase("&nom_fich");
run;

/* Compruebo si hay más de 1 */
%let dsidf = %sysfunc (open(fich_&nom_fich));   
%let nobs = %sysfunc (attrn(&dsidf, NOBS));
%if &nobs > 1 %then %do;
%put LOG: Unimos los ficheros de &nom_fich.;
%do j = 1 %to &nobs;   
%let rc = %sysfunc (fetch(&dsidf));                                                                                                                                                                                                                                         
    %let nom_fich_lec = %sysfunc (getvarc(&dsidf,%sysfunc(varnum(&dsidf,nom_fich_lec))));
%put LOG: Leyendo fichero: &nom_fich_lec en tabla: &nom_fich;
%lec_e002(&nom_fich_lec, &j, &nom_fich);
%end;
/* sacar fichero */
%put LOG: Sacar fichero unión &nom_fich;
%esc_e002(&nom_fich);
%end;
%let rc = %sysfunc (close(&dsidf));
   
%mend;

%let fich_sibs_e002 = sibs_e002;

%unir_ficheros(&fich_sibs_e002);


/****** Pruebas ********/

/*
data ficheros;
length nom_fich_lec $50.;
nom_fich_lec =  "sibs_e002_20180130_1.csv";   output;
nom_fich_lec =  "sibs_r003_20180130.csv";   output;
nom_fich_lec =  "SIBS_E002_20180130_2.csv";   output;
nom_fich_lec =  "SIBS_test_20180130_4.csv";   output;
run;


%let nom_fich = sibs_e002;
*/


/* Cambio  resumen asientos contables */

/* Asientos E002 */

/* agregados a nivel: banco, pre_rei y producto. Añadir cuenta contable */

data sibs_e002_1;
set sibs_e002_1;
if cod_contrato ne . and fecha ne .;
run;


data sibs_respos_1;
set sibs_respos_1;
if cod_contrato ne . and fecha ne .;
run;

data sibs_e002_tot;
set sibs_e002_1
sibs_respos_1;
run;


proc sql;
create table ag_sibs_e002 as
(select pre_rei, producto, sum(importe) as importe
from sibs_e002_1
group by pre_rei, producto);
quit;


/* Cruce con tabla para añadir cuenta_contable */
proc sql;
create table tabsas.asientos_sibs_e002_&fecha_proc. as
select a.*, b.cuenta_contable, b.tipo from
ag_sibs_e002 a left join tabsas.sibs_cuenta_contable_e002 b
on (a.pre_rei = b.pre_rei and a.producto = b.producto );
quit;

title "Asientos SIBS E002 &fecha_proc";
proc print data=tabsas.asientos_sibs_e002_&fecha_proc.;
run;

proc sql;
create table ag_sibs_respos as
(select pre_rei, producto, sum(importe) as importe
from sibs_respos_1
group by pre_rei, producto);
quit;

/* Cruce con tabla para añadir cuenta_contable */
proc sql;
create table tabsas.asientos_sibs_respos_&fecha_proc. as
select a.*, b.cuenta_contable, b.tipo from
ag_sibs_respos a left join tabsas.sibs_cuenta_contable_e002 b
on (a.pre_rei = b.pre_rei and a.producto = b.producto );
quit;

proc print data=tabsas.asientos_sibs_respos_&fecha_proc.;
run;



/* Asientos R00 */

%macro asientos_contables_r003;

data sibs_r003_sepa_1;
set SIBS_R003_SEPA_1;
if cod_contrato ne . and fecha ne .;
run;

data sibs_r003_linelim_1;
set SIBS_R003_linelim_1;
if cod_contrato ne . and fecha ne .;
run;

data sibs_r003_tot;
set SIBS_R003_SEPA_1 SIBS_R003_linelim_1;
run;

proc sql;
create table ag_sibs_r003 as
(select pre_rei, producto, sum(importe) as importe
from sibs_r003_sepa_1
group by pre_rei, producto);
quit;

/* Cruce con tabla para añadir cuenta_contable */

proc sql;
create table tabsas.asientos_sibs_r003_&fecha_proc. as
select b.cuenta_contable, b.tipo, sum(a.importe) as importe from
ag_sibs_r003 a left join tabsas.sibs_cuenta_contable_r003 b
on (a.pre_rei = b.pre_rei and a.producto = b.producto )
group by b.cuenta_contable, b.tipo;
quit;

title "Asientos SIBS R003 &fecha_proc";
proc print data=tabsas.asientos_sibs_r003_&fecha_proc.;
run;

proc sql;
create table ag_sibs_r003_linelim as
(select pre_rei, producto, sum(importe) as importe
from sibs_r003_linelim_1
group by pre_rei, producto);
quit;

/* Cruce con tabla para añadir cuenta_contable */

proc sql;
create table tabsas.asientos_sibs_r003_line_&fecha_proc. as
select b.cuenta_contable, b.tipo, sum(a.importe) as importe from
ag_sibs_r003_linelim a left join tabsas.sibs_cuenta_contable_r003 b
on (a.pre_rei = b.pre_rei and a.producto = b.producto )
group by b.cuenta_contable, b.tipo;
quit;

proc print data=tabsas.asientos_sibs_r003_line_&fecha_proc.;
run;

%mend;

%asientos_contables_r003;

miércoles, 24 de enero de 2018

Videos de introducción a SAS Enterprise Guide


Recopilación de videos de introducción a SAS Enterprise Guide:

- Importación datos en SAS Enterprise Guide 

Sencillo de ejemplo de como realizar una importación de datos en SAS. Video útil para iniciación en SAS Enterprise Guide




 - Constructor queries 

Ejemplo de utilización de la tarea Constructor de queries de SAS Enterprise Guide.





- Ordenar datos y gestionar duplicados 

En este video veremos como ordenar tablas SAS y como detectar registros duplicados ne base a la clave de ordenación.





- Trasponer datos con SAS

Sencillo ejemplo de trasposición de datos.




Más formacion SAS en: Formación SAS datademy

jueves, 11 de enero de 2018

Humor data science

Tres cuestiones básicas sobre data science que hay que tener presentes antes de empezar un proyecto.😄😏


viernes, 3 de noviembre de 2017

Análisis y predicción de series temporales con SAS Visual Analytics

En este video mostramos un ejemplo sencillo de cómo analizar series temporales en SAS Visual Analytics. En el ejemplo vemos por un lado realizar una predicción en base a la serie histórica y como trabajar con escenarios de simulación añadiendo nuevas métricas relacionada con la métrica de estudio.


Formación SAS (presencial y on-line)

sábado, 23 de septiembre de 2017

Pentaho es ahora Vantara

Hace un par de años Hitachi compró Pentaho y ahora se anuncia la creación de una nueva compañía llamada Vantara. Esta nueva compañía unifica las operaciones de Pentaho, Hitachi Data Systems y Hitacho Insight Group en una única compañía llamada Vantara.



Las herramientas Pentaho Data Integration y analytics continuarán evolucionando y Hitachi Vantara invertirá para los futuros desarrollos en big data, IoT y machine learning.



Más información en:

Pentaho becomes Hitachi Vantara

Hitachi Vantara

Por otro lado, el pasado mes de Agosto se publicó el cuadrante Gartner de herramientas de Integración de datos. En este cuadrante aparece por primera vez la solución ETL de Pentaho:  Pentaho Data Integration en el cuadrante de herramientas de nicho reconiciendo la buena evolución de la herramienta en los últimos años, sobre todo en lo relativo a su integración con infraestructuras Big Data (Hadoop, Spark, etc..) y su productividad en entornos Data Lake. Otra herramienta con potente versión open source como es Talend también tiene un buen reconocimiento adelantando a un fabricante lider como es Oracle.



miércoles, 6 de septiembre de 2017

sábado, 2 de septiembre de 2017

Formación SAS on-line

Datademy, centro de formación especializado en B.I. y Big Data lanza formación SAS on-line orientada a analistas de negocio.




El curso se centra SAS Enterprise Guide y SAS Base e incluye: 

  • Material didáctico con multitud de ejemplos
  • Más de 20 videos con ejemplos paso a paso
  • Sesiones de tutoría on-line concertadas con el profesor
  • Respuestas a dudas vía e-mail (tope 24h)
  • Multitud de ejercicios prácticos orientados a áreas de reporting y analytics
  • Profesores certificados en SAS con dilatada experiencia en proyectos
  • Idioma español


Diseñado para realizarlo desde cualquier localización, a distancia, a tu ritmo, compatible con horario laboral. 

El curso se ha realizado ya con alumnos españoles y de latinoamérica con bastante éxito y queremos seguir expandiendo fronteras.

Interesados: formacion@datademy.es. 


</The Data Academy/>