¿Qué idioma utilizas para la manipulación de datos?

Estoy usando varias herramientas:

  • SQL
  • R
  • Scala
  • Pitón
  • bash + utilidades unix
  • Pentaho Kettle (ETL)
  • procedimientos almacenados

Entre estos elijo lo que sea más conveniente. Esto depende de cuánta manipulación estoy haciendo y de dónde provienen y hacia dónde van los datos. Por ejemplo, si los datos llegaron a una tabla de aterrizaje en una base de datos y quiero ponerlos en una tabla de entidades de vida más larga para completar mi ETL, voy a buscar manipularlos con SQL y / o funciones / procedimientos almacenados primero.

Por otro lado, si mis datos están en un formato CSV o delimitado por tabulaciones, buscaré canalizar los datos en algún proceso que los limpie. Si la limpieza es simple, buscaré scripts de bash simples. Hay mucho que puedes hacer con grep, cut, sort, uniq, etc … y si quieres obtener un awk y sed más sofisticado. Si es más complicado, veré un lenguaje de programación de nivel superior como python, ruby ​​o un lenguaje JVM como java, groovy o scala. A menudo tiene que usar estas opciones si obtiene datos estructurados de documentos, como los de un servicio web, porque necesitará analizar XML o JSON.

Por lo general, mi objetivo es implementar un proceso ETL que almacene datos limpios en algún almacén de persistencia, de modo que cuando realice análisis en él no tenga que masajearlo todo el tiempo. Pero a menudo, hay manipulaciones “únicas” que no son problemas de limpieza de datos, sino parte del algoritmo analítico. En estos casos, voy a masajear los datos en la herramienta de análisis (o en el camino a medida que pasan a la herramienta de análisis). Aquí es donde podría hacerlo en R o en cualquier idioma en el que se ejecute mi herramienta. Por ejemplo: si estoy haciendo un análisis con scikit-learn de python con datos alimentados desde Casandra, probablemente escribiré lógica de preparación de datos en python. Del mismo modo, si estoy haciendo un GLM con R desde un db, lo haré con R o tal vez con SQL / procesos almacenados en la vista a la que adjunto con R.

En general, elijo mi ETL, la tienda de persistencia y las herramientas de análisis de datos en función de las características principales que proporcionan dentro de su dominio y luego la manipulación de datos se produce al caer al buscar la forma más fácil de hacerlo dentro del ecosistema que ya tengo. Esto simplifica las cosas, ya que cada elemento de la plataforma que agrega tiene un efecto multiplicador en la complejidad general, especialmente cuando necesita poner en funcionamiento una solución de producción. Pero a veces la manipulación de datos es un valor agregado clave del proceso. Los ejemplos podrían ser poner direcciones en un formato estándar compatible con CASS, o hacer algún tipo de reducción de SIG (mapear a los clientes a su congresista en base a mapas del distrito del Congreso o niños a su ruta de autobús). Cuando esto sucede, rompo la regla general y dejo que las herramientas de manipulación de datos específicas del dominio se conviertan en miembros de primera clase de su solución.