Tôt ou tard, tout le monde vient à l'analyse des données. Dans les grands jeux multijoueurs (et en solo également) sans cela, il n'y a nulle part où aller. Combien d'utilisateurs préfèrent le nouveau mode; où sont les points faibles de la monétisation; où regarder les concepteurs de jeux pour accroître la participation des joueurs; et un million de choses de plus - tout est compté. Et tout cela affecte les décisions que les développeurs prennent ensuite.
Mais ils implémentent l'analytique de différentes manières: quelqu'un achète des solutions tierces (simples, mais inflexibles), quelqu'un écrit pour lui-même (long et coûteux), tandis que quelqu'un considère simplement plusieurs mesures de base par les programmeurs et ne dérange pas.
Je vais donc parler d'un outil qui sera utile à tous. Ceux qui commencent tout juste à construire des analyses pourront créer un système «à partir du genou» à partir de zéro, et les entreprises avec des solutions toutes faites pourront «booster» leur approche.

Il s'agit d'
Apache Zeppelin . Il s'agit d'un shell interactif multifonctionnel qui vous permet d'interroger diverses sources de données, de traiter et de visualiser les résultats.
Un analogue assez proche est le Jupyter Notebook, mais Zeppelin est un peu plus adapté pour travailler avec des bases de données. Il utilise le concept d '"interprètes" - des plugins qui fournissent un backend pour une langue et / ou une base de données.
Zeppelin, comme Jupyter, pour l'utilisateur ressemble à un ensemble de fichiers de bloc-notes, composé de paragraphes dans lesquels les demandes sont écrites et exécutées. Grâce aux visualiseurs intégrés, un ordinateur portable avec un ensemble de requêtes peut facilement être transformé en un tableau de bord de données à part entière.

Nous ne traiterons pas délibérément les problèmes d'installation et de configuration - c'est à la fois dans la documentation sur le site et sur le réseau que vous pouvez trouver plusieurs tutoriels pour différentes bases de données. Le but de l'article est de parler du côté utilisateur du problème, des applications intéressantes de l'outil (y compris pas les plus évidentes) et des avantages que les analystes peuvent en tirer, quelle que soit la solution qu'ils utilisent déjà.
À titre d'exemple, je vais vous expliquer pourquoi nous l'utilisons dans Pixonic (juste le cas lorsque l'entreprise a déjà son propre système d'analyse productive).
Alors, allons-y dans l'ordre.
Omnivore Zeppelin
Combiner différentes sources de données - dans un seul tableau de bord
- l'un de ses principaux avantages. Dans le cadre de l'assemblage standard, un ensemble impressionnant d'interprètes est inclus (pour NoSQL et les bases de données relationnelles).
En pratique, cela donne:
- La plupart des entreprises disposant de bases de données et de systèmes d'analyse existants peuvent l'utiliser «prêt à l'emploi» (dans la mesure où cela s'applique à un produit open source, heh). Les amateurs de bases de données plus exotiques peuvent écrire l’interprète eux-mêmes, car il existe un article sur le site Web du produit.
- Les petites entreprises, si elles le souhaitent, peuvent construire leur système d'analyse exclusivement à partir de la base de données et de Zeppelin en tant qu'interface.
- Comme le montre l'expérience de la communication avec des collègues, pour beaucoup, les données peuvent provenir de différentes sources, stockées dans différentes bases de données (le-e-gashi!), Quelqu'un peut utiliser des services d'analyse tiers supplémentaires. En conséquence, les analystes ont parfois la tâche de «se faire des amis» d'une telle ménagerie entre eux. Zeppelin vous permet d'utiliser votre propre interprète pour chaque paragraphe d'un même bloc-notes, ce qui vous permettra d'afficher les résultats des requêtes vers différentes sources en un seul endroit.

Zeppelin + Python / R
Zeppelin n'est pas seulement une interface Web pour diverses bases de données, mais il peut également agir comme un shell interactif pour exécuter des scripts dans des langages de programmation. Il comprend des interprètes pour R et Python, il peut donc bien être une alternative aux RStudio et Jupyter habituels. Oui, il fournit moins de fonctionnalités que les IDE spécialisés (par exemple, il n'y a pas d'autosubstitution), mais cela est compensé par les avantages, dont nous parlerons ci-dessous.
En conjonction avec le même Python, la puissance de Zeppelin augmente plusieurs fois: ici, vous pouvez obtenir des données via l'API à partir de services tiers (salut au paragraphe précédent), et la possibilité de traiter des données en plus des requêtes de base de données régulières, ainsi que d'automatiser ces processus. Zeppelin prend en charge la mise à jour des tableaux de bord par couronne sans gestes inutiles (encore une fois, un rapide coup d'œil aux décisions des collègues montre que cette tâche apparemment triviale doit parfois être résolue de manière très astucieuse). Eh bien, pour les adeptes: il dispose d'un système de contrôle de version intégré - primitif, mais suffisant pour la plupart des tâches d'analyse.
Au sein de l'entreprise, nous utilisons activement Python avec AppMetr (système d'analyse interne) pour le traitement de données complexes. Par conséquent, l'idée d'essayer Zeppelin est apparue spécifiquement en relation avec nos scripts - nous avons vu cela comme un potentiel pour simplifier un certain nombre de routines liées, par exemple, pour visualiser les résultats.
Visualisez tout dans le monde - en un seul clic
Zeppelin peut afficher les données affichées dans un paragraphe sous la forme de plusieurs visualiseurs de base fonctionnant selon le principe des diagrammes récapitulatifs: dans l'interface, des champs sont sélectionnés sur lesquels les axes seront construits et comment les valeurs affichées seront agrégées. Les diagrammes résultants sont cliquables et facilitent la visualisation des données dans différentes sections.
Cette fonctionnalité apparemment modeste couvre jusqu'à 95% des tâches des analystes dans la visualisation des résultats. Vous pouvez arrêter l'exportation sans fin de téléchargements vers Excel uniquement pour le graphique, et même oublier des mots effrayants tels que matplotlib, bokeh et ggplot2 - les résultats des scripts se transforment également en graphiques en quelques clics.
Cependant, pour les visualisations plus complexes, les noms des bibliothèques graphiques peuvent être mémorisés à nouveau - Zeppelin a une intégration intégrée avec les bibliothèques graphiques les plus populaires pour Python et R:

Collaboration et configuration d'interface
Zeppelin peut fonctionner localement et être utilisé simplement comme un outil d'analyse, mais si vous le déployez sur un serveur, vous pouvez le transformer en un service analytique d'entreprise avec une autorisation via LDAP et des paramètres d'accès si vous le souhaitez. Selon les besoins en matière d'analyse, il peut agir comme un ensemble de tableaux de bord pour les mesures de projet, ainsi que comme un référentiel général de scripts et de téléchargements, ou, par exemple, un espace pour les analystes pour travailler ensemble. Un bon bonus: il n'est pas nécessaire d'échanger de fichiers ou de démarrer un nouveau dock dans Confluence - vous pouvez simplement déposer le lien vers le tableau de bord.
Dans cet aspect, la flexibilité dans la personnalisation de l'interface et la possibilité de générer des formulaires simples pour saisir des valeurs jouent un rôle important. Bien sûr, les analystes se sentent à l'aise à la vue des requêtes SQL et du code R, mais cela peut conduire les utilisateurs non préparés à la stupeur. Par conséquent, dans le tableau de bord Zeppelin, vous pouvez masquer le code (qui, par exemple, est un problème pour Jupyter), créer des champs pour saisir des dates et d'autres paramètres changeants, et donner au client une forme claire et compréhensible.
Dans notre entreprise, de nombreux processus sont liés à l'analyse, par conséquent, différents départements ont périodiquement besoin d'un déchargement spécifique, par exemple, recalculer le tableau du solde en fonction des dernières données. Les scripts ont été écrits pour de telles choses depuis longtemps, mais quelqu'un d'autre doit les exécuter. Avez-vous déjà essayé d'apprendre à 20 concepteurs de jeux à utiliser Jupyter? En conséquence, nous avons élégamment résolu ce problème en déplaçant les scripts vers Zeppelin, où, par exemple, les DG peuvent obtenir les données dont ils ont besoin en cliquant simplement sur un seul bouton. Ou pas un:

Ce qui est très important en ce moment, c'est que toute la préparation et la configuration de l'interface se fait exclusivement par les analystes eux-mêmes, sans impliquer les programmeurs (ou, Dieu nous en préserve, les fossés UX).
Avantages des processus parallèles
Zeppelin fonctionne dans plusieurs processus, dont un bonus intéressant suit - il vous permet d'exécuter une instance Python distincte pour chaque ordinateur portable et pour chaque utilisateur. Ainsi, sans paramètres difficiles, vous pouvez exécuter plusieurs scripts de traitement volumineux en parallèle - simplement en le faisant sur différents ordinateurs portables, et continuer à travailler sans attendre la fin. Cela fonctionne également dans le cas d'une copie locale, et lors du déploiement sur un serveur, il est possible de retirer une partie des calculs des ordinateurs locaux en général, en les exécutant sur le serveur.

Incorporation de paragraphes dans des sites
Si Zeppelin est déployé sur le serveur, vous pouvez obtenir un lien vers l'un de vos paragraphes (avec les résultats de la requête ou un graphique) et le publier en tant que iframe sur le site (cela se fait très simplement, le site a un tutoriel). En pratique, les analystes ont rarement besoin de publier certains résultats sur des ressources externes, mais cela peut être très pratique pour ajouter des visualiseurs aux services internes (dans la même Confluence). Vous pouvez donc créer des rapports dans lesquels se trouvent des formulaires interactifs et des visualiseurs directement dans le texte.
Rapports auto-descriptifs
La prise en charge de Markdown vous permet d'ajouter des paragraphes avec du texte formaté aux tableaux de bord, en plus des graphiques et des tableaux. En conséquence, vous pouvez créer des rapports visuels avec des descriptions, où l'utilisateur peut immédiatement voir les données sur un problème, tout voir sur les graphiques et lire l'interprétation des résultats des analystes. Contrairement à Jupyter, qui prend également en charge le démarquage, Zeppelin crée des formulaires interactifs et visualise les résultats beaucoup plus rapidement, et le résultat est plus précis et accessible à l'utilisateur final, ce qui est important.
C'est donc une alternative rapide et claire à la recherche habituelle des analystes. En règle générale, le travail des analystes est structuré comme suit: les analystes sont chargés d'étudier certains aspects du jeu. Ils préparent des données, testent des hypothèses, visualisent des résultats à l'appui, par exemple avec des diagrammes et rédigent un rapport (par exemple, en confluence). Il s'agit d'un processus correct, mais plutôt minutieux. Dans notre cas, vous pouvez, sans perdre de temps, esquisser un ordinateur portable avec ces déchargements et ces scripts, illustrer immédiatement les résultats avec des graphiques et décrire vos conclusions dans les paragraphes suivants:

Bien sûr, Zeppelin a quelque chose à réprimander, il ne fonctionne toujours pas de manière stable (c'est toujours une source ouverte), l'interface Web consomme beaucoup de RAM, quelqu'un peut ne pas avoir les fonctions d'un IDE à part entière. Mais il existe déjà un certain nombre de cas d'utilisation intéressants où cela peut être utile - car il mérite définitivement l'attention des analystes (
et, bien sûr, plus la communauté est grande, mieux elle peut devenir à l'avenir ).
Pour les petites entreprises, il peut devenir l'outil principal, car il vous permet d'ajouter un système d'analyse complet sur la base de données. Pour les grandes entreprises avec une boîte à outils d'analyse existante - un ajout utile qui ne remplacera pas le système principal, mais fournira plusieurs avantages utiles.