Analisando mudanças com dados históricos (snapshotting)

É fácil analisar os dados mais recentes e alterações na GoodData. Este artigo usa um cenário de vendas, mas você pode usá-lo analisar seu help desk, controle de qualidade ou dados de engenharia e desenvolvimento.

Este artigo apresenta a técnica analítica chamada de snapshotting. No cenário a seguir, você irá trabalhar com os conceitos de oportunidades, fases de vendas e mudança.

Análise de vendas

Análise de vendas Analytics trata de oportunidades de vendas que são geradas por suas atividades de negócio. Cada oportunidade tem um status que descreve se a oportunidade é Em aberto (Pipeline), Ganho (receitas), ou Perda (receita perdida).

Neste artigo, tentamos responder a uma pergunta típica de vendas: “Qual era o pipeline no início do semestre e como melhorou desde então?”

Noções básicas de snapshotting

Para responder a essa pergunta, você vai usar uma técnica chamada snapshotting. A ideia-chave é que continuamos a transferir todas as oportunidades de seu CRM para o GoodData toda semana (ou dia ou mês - depende de suas necessidades). Chamamos o conjunto semanal de oportunidades de um snapshot. Cada snapshot está associado a uma data e uma ID exclusiva.

Então, se temos um projeto que acumula snapshots por 118 semanas, a maioria de nossas oportunidades será duplicada 118 vezes no projeto. Algumas deles foram criados depois de começarmos a fazer snapshots e têm menos de 118 versões. Cada versão está associada a uma data de snapshot (talvez segunda-feira de cada semana) e à ID do snapshot. É muito benéfico usar IDs de snapshots em sequência sem lacunas. Podemos então identificar simplesmente o snapshot anterior/seguinte, como a ID atual menos ou mais um.

Aqui está a primeira captura. Uma métrica simples SELECT SUM(Valor) WHERE Status = Aberto mede os retornos de pipeline em um número que é aproximadamente 118 vezes maior do que o que esperamos. Isto é porque estamos adicionando até todas as dez versões de cada oportunidade. Em vez disso, podemos definir a métrica que mostra a quantidade total para cada snapshot somente:

Pipeline [118 semanas]:

SELECT SUM(Amount) WHERE Status = Open AND SnapshotId = 1

Pipeline [agora]:

SELECT SUM(Amount) WHERE Status = Open AND SnapshotId = 118

No entanto, você precisará de uma nova métrica na próxima semana e uma outra na semana posterior. Uma métrica que retorna a quantidade total para o último snapshot seria útil. Vamos começar a criar tal métrica com identificação do último snapshot:

Snapshot [mais recente]:

SELECT MAX(SnapshotId)

Esta definição parece fácil o suficiente, no entanto, tem alguns problemas. Imagine que você demitiu o representante de vendas João durante o snapshot 25. Mantivemos todas as oportunidades que ele fechou associadas a ele e reassociamos todas as oportunidades abertas a outros vendedores.

Agora, se detalharmos o snapshot [mais recente] por representante, veremos que a métrica retorna 118 para todos os representantes de vendas, exceto João, que recebe o snapshot [mais recente] = 25. Este é o problema porque calcularíamos nosso total sobre o snapshot 25 para John e o snapshot 118 para todo mundo. Precisamos melhorar a definição da métrica de snapshot [mais recente]:

Snapshot [mais recente]:

SELECT MAX(SnapshotId) BY ALL IN ALL OTHER DIMENSIONS WITHOUT PARENT FILTER`

Esta métrica retorna o snapshot MAX independentemente DE quaisquer dimensões. O último snapshot (= 118) de todos os representantes de vendas, incluindo John, para todas as regiões, para todos os produtos etc. Quando você adiciona a instrução BY ALL IN ALL OTHER DIMENSIONS à sua métrica, ela retorna o total geral (MAX) do período completo e de todas as dimensões. Retorna uma constante.

Para que serve a cláusula WITHOUT PARENT FILTER? Imagine que você coloque a métrica em um relatório que contém o filtro Rep. Vendas = João. Aplicar este filtro conduziria aos mesmos problemas que eliminamos com BY ALL IN ALL OTHER DIMENSIONS. A cláusula WITHOUT PARENT FILTER ignora o nível superior filtros.

Então podemos usar a métrica snapshot [mais recente] em nossa métrica de pipeline e obter a quantidade mais recente desta forma:

Pipeline [agora]:

SELECT SUM(Amount) WHERE Status = Open AND SnapshotId = Snapshot [Most Recent]

Da mesma forma podemos calcular o pipeline para o primeiro snapshot (aquele mais antigo). A métrica é:

Snapshot [mais antigo]:

SELECT MIN(SnapshotId) BY ALL IN ALL OTHER DIMENSIONS

e use-o na métrica de pipeline a seguir:

Pipeline [mais antigo]:

SELECT SUM(Amount) WHERE Status = Open AND SnapshotId = Snapshot [Oldest]

Medindo a mudança de Pipeline em um trimestre

Os snapshots mais antigos e mais recentes são excelentes, mas queremos algo um pouco diferente. Queremos calcular o pipeline para o primeiro e o último snapshot em um trimestre. Pode conseguir através das seguintes definições de métricas:

Snapshot [primeiro no período]:

SELECT MIN(SnapshotId) BY ALL IN ALL OTHER DIMENSIONS EXCEPT SnapshotDate WITHOUT PARENT FILTER

Snapshot [último no período]:

SELECT MAX(SnapshotId) BY ALL IN ALL OTHER DIMENSIONS EXCEPT SnapshotDate WITHOUT PARENT FILTER

Vamos focar nas dimensões da instrução BY ALL IN ALL OTHER DIMENSIONS EXCEPT. Usar este conceito permite calcular o total MAX/MIN de SnapshotId independentemente de qualquer dimensão, mas com exceção do atributo específico. A exceção é um atributo após a expressão EXCEPT . Assim, o número resultante não vai mais ser uma constante. Vai depender do valor de SnapshotDate. Em outras palavras, essa métrica retorna o SnapshotId máximo para o período de SnapshotDate.

Se você colocar as métricas acima para um relatório com o trimestre de snapshot, verá a primeira e última ID de snapshot que temos para cada trimestre. Veja o relatório abaixo:

Então,o pipeline no início de um período:

Pipeline [Primeiro no período]:

SELECT SUM(Amount) WHERE Status = Open AND SnapshotId = Snapshot [First in Period]

E o número mais recente e maior da pipeline é:

pipeline [último período]:

SELECT SUM(Amount) WHERE Status = Open AND SnapshotId = Snapshot [Last in Period]

Junte essas duas métricas em um relatório com o trimestre de snapshot e obterá o pipeline no início de cada trimestre e o último pipeline conhecido de cada trimestre.

Dependendo de suas necessidades, você pode dividir ou subtrair estes números para obter os crescimentos absolutos ou relativos.