Matices de las soluciones R operativas en un entorno empresarial

Las soluciones basadas en R, tanto la generación de informes clásica como la analítica operativa, han demostrado su eficacia en un entorno empresarial. Sin lugar a dudas, RStudio y su apasionado equipo juegan un papel importante en esto . En los productos comerciales de RStudio, no tiene que pensar en problemas de infraestructura, sino simplemente intercambiar un poco de dinero por una solución lista para usar y confiar en sus desarrolladores y soporte. En las ediciones de código abierto, y la mayoría de las instalaciones en las empresas rusas son así, debe pensar en los problemas de infraestructura por su cuenta.





Las soluciones R cierran bien el nicho de los "datos promedio", cuando hay "un poco más" de datos de los que caben en Excel o un sistema relacional no configurado y se necesitan algoritmos y procesamiento complejos, pero cuando aún es demasiado pronto para implementar el "lanzamiento complejo "de grandes fechas, nuestras tareas todavía están dentro de la órbita de la Tierra. Estamos hablando de decenas a cientos de terabytes en su totalidad, que pueden caber fácilmente en el backend de Clikhouse . Un punto importante: todo está en un circuito interno, en la inmensa mayoría de los casos, TOTALMENTE desconectado de Internet.





Continuando con una serie de publicaciones anteriores , refina los componentes básicos para una aplicación empresarial R sólida .





Problemático

Para obtener una solución productiva, debe garantizar resultados y cálculos reproducibles. El problema de la reproducibilidad se divide en varias direcciones diferentes. Se pueden distinguir grandes bloques:





  • reproducibilidad de la infraestructura. Muchas preguntas se cierran con una combinación de tecnologías docker + renv + git.





  • reproducibilidad del software. Muchas preguntas se cierran con la tecnología de paquetes y autotests.





  • "similitud" estadística de los resultados. Aquí es donde surge la especificidad de cada tarea individual. A continuación se sugieren algunos puntos para asegurarlo.





Cual es la dificultad?





Algoritmos "implementados en producción"





  • puede ser multifase con un tiempo de cálculo acumulativo de varias horas;





  • «» ( , excel , ..);





  • , ;





  • ;





  • .





  • , ;





  • , . .





( ) , . , . , prod (), dev .





, . , , . , . . , (availability) X% $Y. .









  • . , .





  • , .





  • . .





  • .





  • data.frame



    , «» , .





, :





  • futile.logger





  • lgr





  • logger





warning



message



, . , .





, .Rds



(1-1000 Ram) . 3 :





  • fst





  • qs





  • arrow





-- . , , .. .





:





  • checkmate -- + ;





  • skimr -- ;





  • validate -- ;





  • testthat / tinytest -- ;





  • dplyr / data.table -- .





, . Win-Vector.





pipe (%>%



). . - ( «» « », ), . , , .



.





:





  • tidylog. , tidylog



    tidyverse



    , dpylr::mutate



    .





  • lumberjack.





, :





  • «Debugging with RStudio by Jonathan McPherson»





  • «Advanced R», . «Debugging»





(shiny )?





  • browser()



    . IDE. . -- . .





  • debug()



    /undebug()



    /debugonce()



    . , .., .





  • traceback()



    . .





  • options(datatable.verbose = TRUE)



    . data.table



    ( , , ).





  • utils::getFromNamespace



    . .





  • waldo diffobj. .





  • pryr::object_size()



    . «» .





  • reprex



    . .





  • gginnards



    . ggplot.





browser()



, data.table



.





library(data.table)
library(magrittr)

dt <- as.data.table(mtcars) %>%
  .[, {m <- head(.SD, 2); print(ls()); browser(); m}, by = gear]
#>  [1] "-.POSIXt"  "am"        "carb"      "Cfastmean" "cyl"       "disp"     
#>  [7] "drat"      "gear"      "hp"        "m"         "mpg"       "print"    
#> [13] "qsec"      "strptime"  "vs"        "wt"       
#> Called from: `[.data.table`(., , {
#>     m <- head(.SD, 2)
#>     print(ls())
#>     browser()
#>     m
#> }, by = gear)
      
      



. ( ) , .





  • bench





  • microbenchmark





  • system.time({…})







  • profvis





  • proffer





  1. .

    ? . , , .





  2. make



     . drake/targets





  3. En problemas prácticos puede haber todo tipo de sorpresas, la magia de bigdata no siempre ayuda, leemos al detective irónico "Usando AWK y R para parse 25tb"





Publicación anterior - "¿Cómo domesticar la minería de procesos con R en una empresa?" ...








All Articles