Mais cedo ou mais tarde, todo mundo chega à análise de dados. Em grandes jogos multiplayer (e também para um jogador) sem isso, não há para onde ir. Quantos usuários preferem o novo modo; onde estão os pontos fracos da monetização; onde assistir designers de jogos para aumentar o envolvimento dos jogadores; e mais um milhão de coisas - tudo é contado. E tudo isso afeta as decisões que os desenvolvedores tomam.
Mas eles implementam análises de maneiras diferentes: alguém compra soluções de terceiros (simples, mas inflexíveis), alguém escreve para si mesmo (longo e caro), enquanto alguém apenas considera várias métricas básicas pelos programadores e não se incomoda.
Portanto, vou falar sobre uma ferramenta que será útil para todos. Aqueles que estão começando a criar análises poderão criar um sistema "do joelho" a partir do zero, e as empresas com soluções prontas poderão "impulsionar" sua abordagem.

É sobre o
Apache Zeppelin . Este é um shell interativo multifuncional que permite consultar várias fontes de dados, processar e visualizar os resultados.
Um análogo bastante próximo é o Jupyter Notebook, mas o Zeppelin é um pouco mais otimizado para trabalhar com bancos de dados. Ele usa o conceito de "intérpretes" - plugins que fornecem um back-end para um idioma e / ou banco de dados.
O Zeppelin, como o Jupyter, para o usuário parece um conjunto de arquivos de bloco de anotações que consistem em parágrafos nos quais as solicitações são gravadas e executadas. Usando visualizadores embutidos, um laptop com um conjunto de consultas pode ser facilmente transformado em um painel de dados completo.

Não trataremos deliberadamente de questões de instalação e configuração - isso está na documentação do site e da rede, você pode encontrar vários tutoriais para diferentes bancos de dados. O objetivo do artigo é falar sobre o lado do usuário da questão, aplicativos interessantes da ferramenta (incluindo os não mais óbvios) e os benefícios que os analistas podem extrair dela, independentemente da solução que já usam.
Como exemplo, mostrarei por que o usamos no Pixonic (exatamente no caso em que a empresa já possui seu próprio sistema de análise produtiva).
Então, vamos em ordem.
Omnivore Zeppelin
Combinando diferentes fontes de dados - dentro de um painel
- uma das suas principais vantagens. Como parte da montagem padrão, um conjunto impressionante de intérpretes é incluído (para NoSQL e bancos de dados relacionais).
Na prática, isso fornece o seguinte:
- A maioria das empresas com bancos de dados e sistemas de análise existentes pode usá-lo "pronto para uso" (na medida em que isso se aplica a um produto de código aberto, heh). Entusiastas com bancos de dados mais exóticos podem escrever o intérprete, pois há um artigo no site do produto.
- Pequenas empresas, se desejado, podem construir seu sistema de análise exclusivamente a partir do banco de dados e o Zeppelin como uma interface.
- Como a experiência de se comunicar com colegas mostra, para muitos, os dados podem ser reunidos de diferentes fontes, armazenados em diferentes bancos de dados (le-e-gashi!). Alguém pode usar serviços adicionais de análise de terceiros. Consequentemente, os analistas às vezes têm a tarefa de "fazer amigos" de tal zoológico entre si. O Zeppelin permite que você use seu próprio intérprete para cada parágrafo em um bloco de notas, o que permitirá exibir os resultados das consultas para diferentes fontes em um único local.

Zepelim + Python / R
O Zeppelin não é apenas uma interface da web para vários bancos de dados, mas também pode atuar como um shell interativo para a execução de scripts em linguagens de programação. Ele inclui intérpretes para R e Python, portanto, pode muito bem ser uma alternativa ao habitual RStudio e Jupyter. Sim, ele fornece menos recursos do que IDEs especializados (por exemplo, não há substituição automática), mas isso é compensado pelas vantagens que discutiremos abaixo.
Em conjunto com o mesmo Python, o poder do Zeppelin aumenta muitas vezes: aqui você tem a capacidade de receber dados da API de serviços de terceiros (olá ao parágrafo anterior) e a capacidade de processar dados além de consultas regulares ao banco de dados, além de automatizar esses processos. O Zeppelin suporta a atualização de painéis por coroa sem gestos desnecessários (novamente, uma rápida olhada nas decisões dos colegas mostra que essa tarefa aparentemente trivial às vezes precisa ser resolvida de maneira muito esperta). Bem, para o bem: ele possui um sistema de controle de versão interno - primitivo, mas suficiente para a maioria das tarefas de análise.
Na empresa, usamos ativamente o Python junto com o AppMetr (sistema interno de análise) para processamento de dados complexos. Portanto, a ideia de experimentar o Zeppelin apareceu especificamente em relação aos nossos scripts - vimos isso como um potencial para simplificar várias rotinas relacionadas, por exemplo, à visualização dos resultados.
Visualize tudo no mundo - com um clique
O Zeppelin pode exibir os dados exibidos em um parágrafo na forma de vários visualizadores básicos, trabalhando de acordo com o princípio dos diagramas de resumo: na interface, são selecionados campos nos quais os eixos serão construídos e como os valores exibidos serão agregados. Os diagramas resultantes são clicáveis e facilitam a visualização de dados em diferentes seções.
Essa funcionalidade aparentemente modesta cobre até 95% das tarefas dos analistas na visualização de resultados. Você pode interromper a exportação sem fim de downloads para o Excel apenas para gráficos e até esquecer palavras assustadoras como matplotlib, bokeh e ggplot2 - os resultados dos scripts também se transformam em gráficos com apenas alguns cliques.
No entanto, para visualizações mais complexas, os nomes das bibliotecas gráficas podem ser lembrados novamente - o Zeppelin integrou as bibliotecas gráficas mais populares para Python e R:

Colaboração e configuração de interface
O Zeppelin pode funcionar localmente e ser usado simplesmente como uma ferramenta de análise, mas se você o implantar em um servidor, poderá transformá-lo em um serviço analítico corporativo com autorização via LDAP e configurações de acesso, se desejar. Dependendo das necessidades de análise, ele pode atuar como um conjunto de painéis para métricas de projeto, como um repositório geral de scripts e downloads ou, por exemplo, um espaço para os analistas trabalharem juntos. Um bom bônus: não há necessidade de trocar nenhum arquivo ou iniciar um novo dock no Confluence - você pode simplesmente soltar o link no painel.
Nesse aspecto, a flexibilidade na personalização da interface e a capacidade de gerar formulários simples para inserir valores desempenham um papel importante. Obviamente, os analistas se sentem confortáveis ao ver consultas SQL e código R, mas isso pode levar usuários despreparados a um estupor. Portanto, no painel do Zeppelin, você pode ocultar o código (que, por exemplo, é um problema para o Jupyter), criar campos para inserir datas e outros parâmetros alterados e fornecer ao cliente uma forma clara e compreensível.
Em nossa empresa, muitos processos estão vinculados à análise; portanto, diferentes departamentos precisam periodicamente de um descarregamento específico, por exemplo, recalculando a tabela de saldo de acordo com os dados mais recentes. Os scripts foram escritos para essas coisas há muito tempo, mas outra pessoa precisa executá-los. Você já tentou ensinar 20 designers de jogos a usar o Jupyter? Como resultado, resolvemos esse problema com elegância, movendo os scripts para o Zeppelin, onde, por exemplo, as DGs podem obter os dados de que precisam clicando em um único botão. Ou nenhum:

O que é muito importante neste momento é que toda a preparação e configuração da interface ocorra exclusivamente pelos próprios analistas, sem envolver programadores (ou, Deus permita, valas de UX).
Benefícios dos processos paralelos
O Zeppelin trabalha em vários processos, dos quais se segue um bônus interessante - permite executar uma instância Python separada para cada laptop e para cada usuário. Portanto, sem configurações complicadas, você pode executar vários scripts de processamento volumosos em paralelo - apenas fazendo isso em laptops diferentes e continuar trabalhando sem esperar pela conclusão. Isso também funciona no caso de uma cópia local e, ao implantar em um servidor, é possível realizar parte dos cálculos dos computadores locais em geral, realizando-os no servidor.

Incorporando parágrafos em sites
Se você tiver o Zeppelin implantado no servidor, poderá obter um link para qualquer um dos seus parágrafos (com resultados de consulta ou um gráfico) e publicá-lo como um iframe no site (isso é feito de maneira muito simples, o site possui um tutorial). Na prática, os analistas raramente precisam publicar alguns resultados em recursos externos, mas pode ser muito conveniente adicionar visualizadores a serviços internos (na mesma Confluence). Assim, você pode criar relatórios nos quais existem formulários e visualizadores interativos diretamente no texto.
Relatórios autoexplicativos
O suporte de remarcação permite adicionar parágrafos com texto formatado aos painéis, além de gráficos e tabelas. Como resultado, você pode fazer relatórios visuais com descrições, onde o usuário pode ver imediatamente os dados de algum problema, ver tudo nos gráficos e ler a interpretação dos resultados dos analistas. Diferentemente do Jupyter, que também possui suporte a descontos, o Zeppelin faz formulários interativos e visualiza resultados muito mais rapidamente, e o resultado é mais preciso e acessível ao usuário final, o que é importante.
Portanto, é uma alternativa rápida e clara à pesquisa usual de analistas. Como regra, o trabalho dos analistas está estruturado da seguinte forma: os analistas têm a tarefa de estudar algum aspecto do jogo. Eles preparam dados, testam hipóteses, visualizam resultados de suporte, digamos, com diagramas e escrevem um relatório (por exemplo, em confluência). Este é um processo correto, mas bastante meticuloso. No nosso caso, você pode, sem perder tempo, esboçar um laptop com essas descargas e scripts, ilustrar imediatamente os resultados com gráficos e descrever suas conclusões nos próximos parágrafos:

É claro que o Zeppelin tem algo a repreender, ainda nem sempre funciona de maneira estável (ainda é um código aberto), a interface da Web consome muita RAM, alguém pode não ter as funções de um IDE completo. Mas já existem vários casos interessantes de usuários em que isso pode ser útil - porque definitivamente merece a atenção dos analistas (
e, é claro, quanto maior a comunidade, melhor ela pode se tornar no futuro ).
Para pequenas empresas, ela pode se tornar a ferramenta principal, pois permite adicionar um sistema de análise completo ao banco de dados. Para empresas maiores com um kit de ferramentas de análise existente - uma adição útil que não substituirá o sistema principal, mas fornecerá várias vantagens úteis.