Miguel:
Mil gracias por tu sugerencia de usar la barra de progreso tcltk , me funciona perfectamente y además la barra de progreso es más bonita ☺ Ahora me entra la curiosidad malsana de saber porque con la barra de windows no sale la barrra y con tcltk si que aparece. Carlos: No habia oido hablar de ese paquete pero en cuanto termine con los ETL que tengo pendientes voy a empollarme la web del paquete que me has enviado porque seguro que agiliza muchisimo todos estos procesos. Muchas gracias a los dos por la variedad y calidad de las soluciones José Luis Gilsanz Gómez Estadística Departamento Técnico Entidades Financieras JLL Valoraciones S.A. (Jones Lang LaSalle España S.A.) Paseo de la Castellana 130 - 1ª; 28046 Madrid Tel: +34 91 454 96 94 Fax +34 91 541 42 64 jll.es Síguenos en: Twitter I Linkedin I Youtube I Blog Piense en el medio ambiente antes de imprimir este e-mail Los datos personales que en esta comunicación aparecen, así como los que nuestra empresa mantiene de Vd. y de su empresa, son tratados con la finalidad de mantener el contacto así como realizar las gestiones que en esta aparecen (Ley Orgánica 15/1999, de 13 de diciembre, de Protección de Datos de Carácter Personal). Puede ejercer sus derechos de acceso, rectificación, cancelación y oposición dirigiéndose a atencion.cliente...@tasacionesh.com. La utilización de su dirección de correo electrónico por parte de nuestra empresa queda sujeta a las disposiciones de la Ley 34/2002, de Servicios de la Sociedad de la Información y el Comercio Electrónico. Si Vd. recibe comunicación comercial por nuestra parte y desea dejar de recibirla, rogamos nos lo comunique por vía electrónica a través de la dirección atencion.cliente...@tasacionesh.com . > -----Mensaje original----- > De: gilbello...@gmail.com [mailto:gilbello...@gmail.com] En nombre de > Carlos J. Gil Bellosta > Enviado el: martes, 12 de abril de 2016 14:37 > Para: Miguel Angel Rodriguez Muiños > CC: Gilsanz, Jose Luis; r-help-es > Asunto: Re: [R-es] Procesos paralelos > > Hola, ¿qué tal? > > Si la base de datos de destino es SQL Server, ¿por qué no pruebas con la > función dbBulkCopy del paquete https://github.com/agstudy/rsqlserver? > Debería poder cargar millones de registros en segundos. Al menos, en una > única transacción en lugar de múltiples como con sqlSave. > > Un saludo, > > Carlos J. Gil Bellosta > http://www.datanalytics.com > > El día 12 de abril de 2016, 11:55, > <miguel.angel.rodriguez.mui...@sergas.es<mailto:miguel.angel.rodriguez.mui...@sergas.es>> > escribió: > > Hola José Luis. > > > > Te da algún error? o simplemente no aparece la barra de progreso? > > > > ... y si, en vez de usar winProgressBar(), pruebas con la función > tkProgressBar() del paquete tcltk ¿? > > > > Un saludo, > > Miguel. > > > > > > > > El 12/04/2016 a las 11:04, Gilsanz, Jose Luis escribió: > > > > Hola: > > > > Vuelvo a la carga con algo que resolv hace a os y que ahora me ha dejado > de funcionar y no consigo arreglar. A ver si alguien me sugiere alg n enfoque > o directamente la solucion. > > > > Utilizo R en muchos procesos ETL y la cuesti n es que me encuentro con que > tengo que hacer inserts en un BBDD de SQL Server de varios miles (a veces > millones de registros) que mientras R las realiza parece que no est haciendo > nada. > > > > La soluci n que consegu hacer en su momento fue paralelizar el proceso de > inserci n en dos procesos distintos usando el paquete snowfall. > > -Un proceso se encargaba de la propia inserci n de los datos. > > -El otro proceso mostraba una barra de progreso que se constru a > consultando la tabla (tab) donde se insertaban los registros (datos) para > monitorizar su proceso. > > > > La subida al servidor es esta funci n: > > > > subida <- function( datos, tab) > > { > > flush.console() > > canal2 <- odbcDriverConnect( > > "case=nochange; > Driver=xxx; Server=xxx; Database=xxx; uid=xxx; pwd=xxx; wsid=xxx;") > > > > sqlSave(canal2,datos,tablename= tab, rownames = > FALSE, append=TRUE, fast=TRUE ) > > close(canal2) > > rm(canal2) > > } > > > > La barra de progreso se toma de esta funci n: > > pb <-function( datos,tab){ > > ##Creamos canal de conexion a BBDD > > canal1 <- odbcDriverConnect( "case=nochange; > > Driver=SQL Server; Server=xxx; Database=xxx; uid=xxx; pwd=xx; > > wsid=ESMADN1003;;") > > > > ##Obtenemos conteos de registros################## > > #Numero de registro que se van a cargar > > asubir <- as.numeric(nrow(datos)) > > > > #Numero de registro que ya hay en la tabla > > entabla <- as.numeric(sqlQuery(canal1,paste("SELECT > > Count(*) ", " FROM ",tab, sep=""))) > > > > #Numero de registros cargados en el momento n > > total <- as.numeric(0) > > > > #Frecuenca de actualizacion de la barra > > frec <- 0.1 > > > > ##Creamos barra de progreso > > barra <- winProgressBar(title="Subiendo datos a SQL ", label = > > "Subido el: ", min= 0, max= 1,initial= 0, width = 800) > > > > ##Mientras los registros que quedan por subir sean > > inferiores a los > que actualmente hay en la tabla se muestra la barra > > while ( entabla + asubir > total ) > > { > > #Reconectamos > > canal1 <- > > odbcReConnect(canal1) > > > > #Obtenemos registros > > actuales en la tabla (los que > habia + los que han subido hasta el momento) > > total <- > > as.numeric(sqlQuery(canal1,paste("SELECT Count(*) FROM ",tab, > > sep=""))) > > > > #Calculamos porcentaje de > > registros subidos en el > momento > > porcen <- > > as.numeric((total - entabla) / asubir) > > > > #Actualizamos barra de > > progreso > > > > setWinProgressBar(barra, porcen,title="SUBIENDO DATOS A SQL", label > > =paste("Subido el: ", round(porcen *100,0), "% de los datos. Quedan > > por subir ",(entabla + asubir)-total, " registros de ", asubir, "." , > > sep="")) > > > > #Actualizamos consola > > flush.console() > > Sys.sleep(frec) > > } > > close(barra) > > } > > > > Ahora estoy intentando usar el paquete parallel (en lugar de snowfall que > ya no me funciona) haciendo esto. > > library(parallel) > > library(RODBC) > > > > ##Creo un cluster con dos nodos > > cl <-makeCluster(2) > > > > ##Exporto datos y funciones a los dos cluster > > clusterExport(cl,varlist=c("pb","subida","datos","tab")) > > > > ##En el primer cluster hago la inserci n en el segundo la barra de > > progreso > > clusterApply(cl,subida(datos,tab),pb(datos,tab) ) > > > > > > La inserci n la realiza correctamente pero la barra de progreso no > > aparece por ning n lado :( y en el monitor de procesos aparecen dos > > Rscript.exe corriendo (uso Windows 7) > > > > Si alguien quiere que le proporcione la funci n que constru usando snowfall > (y que ahora tampoco muestra la barra) se la puedo enviar para destriparla. > > > > Muchas gracias > > > > Un saludo > > > > > > Jos Luis Gilsanz G mez > > Estad stica > > Departamento T cnico Entidades Financieras JLL Valoraciones S.A. > > (Jones Lang LaSalle Espa a S.A.) Paseo de la Castellana 130 - 1 ; > > 28046 Madrid > > Tel: +34 91 454 96 94 > > Fax +34 91 541 42 64 > > jll.es > > > > S guenos en: > > Twitter<https://twitter.com/JLLSpain><https://twitter.com/JLLSpain> I > > > Linkedin<https://www.linkedin.com/profile/view?id=173156047&trk=nav_re > > > sponsive_tab_profile><https://www.linkedin.com/profile/view?id=1731560 > > 47&trk=nav_responsive_tab_profile> I > > > Youtube<https://www.youtube.com/user/joneslanglasallesp><https://ww > w.y > > outube.com/user/joneslanglasallesp> I > > Blog<http://www.jllinmuebles.es/elblogdelosanillos/><http://www.jllinm > > uebles.es/elblogdelosanillos/> PPiense en el medio ambiente antes de > > imprimir este e-mail > > > > Los datos personales que en esta comunicaci n aparecen, as como los que > nuestra empresa mantiene de Vd. y de su empresa, son tratados con la > finalidad de mantener el contacto as como realizar las gestiones que en esta > aparecen (Ley Org nica 15/1999, de 13 de diciembre, de Protecci n de Datos > de Car cter Personal). > > Puede ejercer sus derechos de acceso, rectificaci n, cancelaci n y oposici n > dirigi ndose a > atencion.cliente...@tasacionesh.com<mailto:atencion.clientesth@tasacione<mailto:atencion.cliente...@tasacionesh.com%3cmailto:atencion.cliente...@tasacionesh.com%3e%3cmailto:atencion.cliente...@tasacionesh.com%3e%3cmailto:atencion.cliente...@tasacionesh.com> > sh.com><mailto:atencion.cliente...@tasacionesh.com><mailto:atencion.clie<mailto:atencion.cliente...@tasacionesh.com%3cmailto:atencion.cliente...@tasacionesh.com%3e%3cmailto:atencion.cliente...@tasacionesh.com%3e%3cmailto:atencion.cliente...@tasacionesh.com> > nte...@tasacionesh.com<mailto:atencion.cliente...@tasacionesh.com%3cmailto:atencion.cliente...@tasacionesh.com%3e%3cmailto:atencion.cliente...@tasacionesh.com%3e%3cmailto:atencion.cliente...@tasacionesh.com>>. > > La utilizaci n de su direcci n de correo electr nico por parte de nuestra > empresa queda sujeta a las disposiciones de la Ley 34/2002, de Servicios de la > Sociedad de la Informaci n y el Comercio Electr nico. Si Vd. recibe comunicaci > n comercial por nuestra parte y desea dejar de recibirla, rogamos nos lo > comunique por v a electr nica a trav s de la direcci n > atencion.cliente...@tasacionesh.com<mailto:atencion.clientesth@tasacione<mailto:atencion.cliente...@tasacionesh.com%3cmailto:atencion.cliente...@tasacionesh.com> > sh.com<mailto:atencion.cliente...@tasacionesh.com%3cmailto:atencion.cliente...@tasacionesh.com>> > <mailto:atencion.cliente...@tasacionesh.com><mailto:atencion.clientesth@<mailto:atencion.cliente...@tasacionesh.com> > tasacionesh.com<mailto:atencion.cliente...@tasacionesh.com>> . > > > > > > JLL Valoraciones > > Registration number: A-28/806222. > > Registered Office: P de la Castellana, 130 - 1 ; 28046 Madrid > > > > This e-mail is for the use of the intended recipient(s) only. If you > > have received this e-mail in error, please notify the sender > > immediately and then delete it. If you are not the intended recipient, > > you must not use, disclose or distribute this e-mail without the > > author's prior permission. We have taken precautions to minimise the > > risk of transmitting software viruses, but we advise you to carry out > > your own virus checks on any attachment to this message. We cannot > > accept liability for any loss or damage caused by software viruses. If > > you are the intended recipient and you do not wish to receive similar > > electronic messages from us in future then please respond to the > > sender to this effect > > > > [[alternative HTML version deleted]] > > > > > > > > > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es@r-project.org<mailto:R-help-es@r-project.org<mailto:R-help-es@r-project.org%3cmailto:R-help-es@r-project.org>> > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > > > > > -- > > Miguel Ángel Rodríguez Muíños > > Asesoramento en Informática > > Dirección Xeral de Saúde Pública > > Consellería de Sanidade > > Xunta de Galicia > > http://dxsp.sergas.es > > > > > > > > > > > > > > ________________________________ > > > > Nota: A información contida nesta mensaxe e os seus posibles documentos > adxuntos é privada e confidencial e está dirixida únicamente ó seu > destinatario/a. Se vostede non é o/a destinatario/a orixinal desta mensaxe, > por favor elimínea. A distribución ou copia desta mensaxe non está > autorizada. > > > > Nota: La información contenida en este mensaje y sus posibles > documentos adjuntos es privada y confidencial y está dirigida únicamente a > su destinatario/a. Si usted no es el/la destinatario/a original de este > mensaje, > por favor elimínelo. La distribución o copia de este mensaje no está > autorizada. > > > > See more languages: http://www.sergas.es/aviso-confidencialidad > > > > [[alternative HTML version deleted]] > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es@r-project.org<mailto:R-help-es@r-project.org> > > https://stat.ethz.ch/mailman/listinfo/r-help-es [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es