Tarde o temprano, todos llegan a la analítica de datos. En grandes juegos multijugador (y también para un jugador) sin esto, no hay lugar a donde ir. ¿Cuántos usuarios prefieren el nuevo modo? ¿Dónde están los puntos débiles de la monetización? dónde mirar a los diseñadores de juegos para aumentar la participación de los jugadores; y un millón más de cosas: todo se cuenta. Y todo esto afecta las decisiones que los desarrolladores toman.
Pero implementan análisis de diferentes maneras: alguien compra soluciones de terceros (simples, pero inflexibles), alguien escribe por sí mismo (largo y costoso), mientras que alguien solo considera varias métricas básicas de los programadores y no se molesta.
Por lo tanto, hablaré sobre una herramienta que será útil para todos. Aquellos que recién están comenzando a crear análisis podrán crear un sistema "desde la rodilla" desde cero, y las empresas con soluciones ya preparadas podrán "impulsar" su enfoque.

Se trata de
Apache Zeppelin . Este es un shell interactivo multifuncional que le permite consultar varias fuentes de datos, procesar y visualizar los resultados.
Un análogo bastante cercano es el Jupyter Notebook, pero Zeppelin está algo más afinado para trabajar con bases de datos. Utiliza el concepto de "intérpretes", complementos que proporcionan un back-end para un idioma y / o base de datos.
Zeppelin, como Jupyter, para el usuario parece un conjunto de archivos de cuaderno, que consta de párrafos en los que se escriben y ejecutan solicitudes. Usando visualizadores integrados, una computadora portátil con un conjunto de consultas se puede convertir fácilmente en un panel de datos completo.

No abordaremos deliberadamente los problemas de instalación y configuración; tanto en la documentación del sitio como en la red puede encontrar varios tutoriales para diferentes bases de datos. El propósito del artículo es hablar sobre el lado del usuario del problema, las aplicaciones interesantes de la herramienta (incluidas las no más obvias) y los beneficios que los analistas pueden extraer de ella, independientemente de la solución que ya utilicen.
Como ejemplo, te diré por qué lo usamos en Pixonic (solo el caso cuando la empresa ya tiene su propio sistema de análisis productivo).
Entonces, vamos en orden.
Zeppelin omnívoro
Combinando diferentes fuentes de datos - dentro de un tablero
- Una de sus principales ventajas. Como parte del ensamblaje estándar, se incluye un impresionante conjunto de intérpretes (para NoSQL y bases de datos relacionales).
En la práctica, esto da lo siguiente:
- La mayoría de las empresas con bases de datos y sistemas analíticos existentes pueden usarlo "fuera de la caja" (en la medida en que esto se aplica a un producto de código abierto, je). Los entusiastas con bases de datos más exóticas pueden escribir el intérprete ellos mismos, ya que hay un artículo en el sitio web del producto.
- Las pequeñas empresas, si lo desean, pueden construir su sistema de análisis exclusivamente desde la base de datos y Zeppelin como interfaz.
- Como lo demuestra la experiencia de comunicarse con colegas, para muchos, los datos pueden agruparse de diferentes fuentes, almacenados en diferentes bases de datos (¡le-e-gashi!), Alguien puede usar servicios de análisis de terceros adicionales. En consecuencia, los analistas a veces tienen la tarea de "hacer amigos" de una colección de animales entre ellos. Zeppelin le permite usar su propio intérprete para cada párrafo dentro de un cuaderno, lo que le permitirá mostrar los resultados de las consultas a diferentes fuentes en un solo lugar.

Zeppelin + Python / R
Zeppelin no es solo una interfaz web para varias bases de datos, sino que también puede actuar como un shell interactivo para ejecutar scripts en lenguajes de programación. Incluye intérpretes para R y Python, por lo que puede ser una alternativa a los habituales RStudio y Jupyter. Sí, proporciona menos funciones que los IDE especializados (por ejemplo, no hay sustitución automática), pero esto se compensa con las ventajas, que analizaremos a continuación.
Junto con el mismo Python, el poder de Zeppelin aumenta muchas veces: aquí puede obtener datos a través de API de servicios de terceros (hola al párrafo anterior), y la capacidad de procesar datos además de consultas regulares de la base de datos, así como automatizar estos procesos. Zeppelin admite la actualización de paneles por corona sin gestos innecesarios (una vez más, un vistazo rápido a las decisiones de los colegas muestra que esta tarea aparentemente trivial a veces debe resolverse de manera muy astuta). Bueno, para los dulces: tiene un sistema de control de versiones incorporado: primitivo, pero suficiente para la mayoría de las tareas de análisis.
En la empresa, utilizamos activamente Python junto con AppMetr (sistema de análisis interno) para el procesamiento de datos complejos. Por lo tanto, la idea de probar Zeppelin apareció específicamente en relación con nuestros scripts; vimos esto como un potencial para simplificar una serie de rutinas relacionadas, por ejemplo, para visualizar los resultados.
Visualiza todo en el mundo con un solo clic
Zeppelin puede mostrar los datos que se muestran en un párrafo en forma de varios visualizadores básicos que funcionan según el principio de los diagramas de resumen: en la interfaz, se seleccionan los campos en los que se construirán los ejes y cómo se agregarán los valores mostrados. Se puede hacer clic en los diagramas resultantes y facilita la visualización de datos en diferentes secciones.
Esta funcionalidad aparentemente modesta cubre hasta el 95% de las tareas de los analistas en la visualización de resultados. Puede detener la exportación interminable de descargas a Excel solo para gráficos, e incluso olvidar palabras tan aterradoras como matplotlib, bokeh y ggplot2: los resultados de los scripts también se convierten en gráficos con un par de clics.
Sin embargo, para visualizaciones más complejas, los nombres de las bibliotecas gráficas pueden recordarse nuevamente: Zeppelin ha integrado la integración con las bibliotecas gráficas más populares para Python y R:

Colaboración y configuración de interfaz
Zeppelin puede funcionar localmente y usarse simplemente como una herramienta de análisis, pero si lo implementa en un servidor, puede convertirlo en un servicio de análisis corporativo con autorización a través de LDAP y acceder a la configuración si lo desea. Dependiendo de las necesidades de análisis, puede actuar como un conjunto de paneles para las métricas del proyecto, así como un depósito general de scripts y descargas, o, por ejemplo, un espacio para que los analistas trabajen juntos. Una buena ventaja: no es necesario intercambiar ningún archivo o iniciar un nuevo dock en Confluence, simplemente puede soltar el enlace en el tablero.
En este aspecto, la flexibilidad en la personalización de la interfaz y la capacidad de generar formas simples para ingresar valores juegan un papel importante. Por supuesto, los analistas se sienten cómodos al ver las consultas SQL y el código R, pero esto puede llevar a los usuarios no preparados a un estupor. Por lo tanto, en el panel de control de Zeppelin, puede ocultar el código (que, por ejemplo, es un problema para Jupyter), crear campos para ingresar fechas y otros parámetros cambiantes, y darle al cliente una forma ordenada y comprensible.
En nuestra empresa, muchos procesos están vinculados a la analítica, por lo tanto, diferentes departamentos necesitan periódicamente una descarga específica, por ejemplo, recalcular la tabla de equilibrio de acuerdo con los últimos datos. Los guiones se han escrito para tales cosas durante mucho tiempo, pero alguien más tiene que ejecutarlos. ¿Alguna vez has tratado de enseñar a 20 diseñadores de juegos a usar Jupyter? Como resultado, resolvimos este problema con elegancia moviendo los scripts a Zeppelin, donde, por ejemplo, los DG pueden obtener los datos que necesitan simplemente haciendo clic en un solo botón. O no uno:

Lo que es muy importante en este momento es que toda la preparación y configuración de la interfaz se realiza exclusivamente por los propios analistas, sin involucrar a los programadores (o, Dios no lo quiera, zanjas UX).
Beneficios de los procesos paralelos
Zeppelin funciona en varios procesos, de los cuales se desprende una bonificación interesante: le permite ejecutar una instancia de Python separada para cada computadora portátil y para cada usuario. Por lo tanto, sin configuraciones complicadas, puede ejecutar varios scripts de procesamiento voluminosos en paralelo, simplemente haciendo esto en diferentes computadoras portátiles y continuar trabajando sin esperar a que se complete. Esto también funciona en el caso de una copia local, y cuando se implementa en un servidor, es posible sacar parte de los cálculos de las computadoras locales en general, realizándolos en el servidor.

Incrustar párrafos en sitios
Si tiene Zeppelin implementado en el servidor, puede obtener un enlace a cualquiera de sus párrafos (con resultados de consultas o un gráfico) y publicarlo como un iframe en el sitio (esto se hace de manera muy simple, el sitio tiene un tutorial). En la práctica, los analistas rara vez necesitan publicar algunos resultados en recursos externos, pero puede ser muy conveniente para agregar visualizadores a los servicios internos (en la misma Confluencia). Por lo tanto, puede crear informes en los que haya formularios interactivos y visualizadores directamente en el texto.
Reportes autodescriptivos
El soporte de Markdown le permite agregar párrafos con texto formateado a paneles, además de gráficos y tablas. Como resultado, puede hacer informes visuales con descripciones, donde el usuario puede ver de inmediato los datos sobre algún problema, verlo todo en los gráficos y leer la interpretación de los resultados de los analistas. A diferencia de Jupyter, que también tiene soporte para rebajas, Zeppelin crea formularios interactivos y visualiza resultados mucho más rápido, y el resultado es más preciso y accesible para el usuario final, lo cual es importante.
Por lo tanto, es una alternativa rápida y clara a la investigación habitual de los analistas. Como regla, el trabajo de los analistas está estructurado de la siguiente manera: a los analistas se les da la tarea de estudiar algún aspecto del juego. Preparan datos, prueban hipótesis, visualizan resultados de apoyo, por ejemplo, con diagramas y escriben un informe (por ejemplo, en confluencia). Este es un proceso correcto, pero bastante laborioso. En nuestro caso, puede, sin perder tiempo, dibujar una computadora portátil con estas mismas descargas y scripts, ilustrar inmediatamente los resultados con gráficos y describir sus conclusiones en los siguientes párrafos:

Por supuesto, Zeppelin tiene algo que regañar, todavía no siempre funciona de manera estable (todavía es de código abierto), la interfaz web consume mucha RAM, alguien puede carecer de las funciones de un IDE completo. Pero ya hay una serie de casos de usuarios interesantes en los que puede ser útil, porque definitivamente merece la atención de los analistas (
y, por supuesto, cuanto más grande sea la comunidad, mejor puede ser en el futuro ).
Para las pequeñas empresas, puede convertirse en la herramienta principal, ya que le permite agregar un sistema analítico completo sobre la base de datos. Para empresas más grandes con un kit de herramientas de análisis existente, una adición útil que no reemplazará al sistema principal, pero proporcionará varias ventajas útiles.