Acelerar operaciones de texto con ReplaceString

daniel

New member
Las operaciones de texto son probablemente las más pesadas en análisis de datos. Por más optimizado que sea Anatella, en muchos casos se convierten en cuellos de botella cuando el volumen de información es alto.
Si bien algunas operaciones no se pueden hacer sin usar formulas complejas, existen formas de simplificar el análisis con el nodo “Replace String”. Este nodo tiene un tab “String (Pre)Processing” que no todos usan.
ReplaceString0.png
Consideramos por ejemplo un numero de teléfono como 25-989-741-2988 del cual queremos eliminar el prefijo de 3 caracteres, pero a veces faltan números.
Usando la funcion "Right" la formula es
  • “right(x,strlen(x)-3)”, o
  • “right(x, 12)” si estamos seguro que no falta nada.
Sobre 15.000.000 de registros, eso se demoraría unos 14-15 segundos (en ambos casos).
Usando en nodo ReplaceString simplemente eliminamos los primeros 3 caracteres. Esa operación dura más p menos alrededor de 9 segundos. No parece mucho el impacto, pero extrapolando eso a 300.000.000 de registros ¡acabamos de ahorrar 3 minutos de análisis en solo una formula!
Otra funcionalidad muy importante es el “replace partial String”. Imaginemos que queremos eliminar los “-“ para poder procesar los números de forma numérica (para ordenar, y ahorrar espacio de almacenamiento).
Tenemos varias opciones:
  • replace(x,"-","") : 21.31 segundos.
  • left(x,2)//substr(x,3,3)//substr(x,7,3) // right(x,4) : 32.82 segundos.
  • Replace Partial String : 15.61 segundos.
El tiempo ahorrado es substancial, solo sobre esta pequeña cantidad de registros. Ya estamos hablando de un impacto de ¡hasta 10 minutos en tiempo de calculo sobre 300.000.000 de registros!
Ejemplo Anatella: View attachment test ReplaceString0.anatella
 
Top