Como exibir dados como uma porcentagem nas visualizações do Kibana
O uso de porcentagens ao executar a analítica de dados é uma abordagem essencial para uma comparação numérica eficaz, especialmente quando os dados em questão demonstram tamanhos ou totais de amostra drasticamente diferentes. As porcentagens possibilitam uma compreensão rápida e precisa de quanto as somas de dados foram alteradas em uma categoria dimensional como um intervalo de tempo, regiões geográficas, linhas de produtos etc.
Neste post do blog, examinaremos alguns exemplos de como calcular porcentagens no Kibana com visualizações comumente usadas, incluindo um gráfico de pizza, uma métrica de número único, uma tabela e uma série temporal com TSVB (o visualizador de dados de série temporal).
Para este blog, usaremos os conjuntos de dados de amostra flights e ecommerce disponíveis com o Kibana. Usando esses dados, você aprenderá a responder a estas perguntas:
- Qual é a porcentagem de voos no horário?
- Qual é a proporção de cada tipo de atraso ao longo do tempo?
- Qual é a mudança no total das vendas semana a semana?
Antes de começar, no entanto, você precisará instalar os dados de amostra flights e ecommerce. Você pode instalar os dados de amostra em seu próprio cluster (6.5 ou posterior) ou fazer uma avaliação gratuita de 14 dias do nosso Elasticsearch Service.
Qual é a porcentagem de voos no horário?
A companhia aérea que é o seu cliente quer colocar um número grande em um dashboard que mostre o desempenho em relação às metas de pontualidade. Cada documento no índice kibana_sample_data_flights de amostra representa um único voo; portanto, para calcular uma porcentagem, é necessário dividir o número de documentos que representam “voos no horário” pelo número de voos.
Por causa dessa divisão, você deve usar a visualização de métrica TSVB, que tem o cálculo de Filter ratio. Filter ratio divide a mesma métrica em dois conjuntos de documentos e retorna um número. O único requisito para o uso do TSVB é um campo de tempo no índice, disponível no índice kibana_sample_data_flights.
Para configurar isso no TSVB no Kibana 7.4 e posterior, primeiro selecione o tipo de visualização e o conjunto de dados e, em seguida, configure as agregações usadas para exibir a porcentagem acima.
Para escolher o tipo de visualização e o conjunto de dados:
- Vá para TSVB e escolha a guia Metric:
- Selecione a guia Panel options:
- Defina Data timerange mode como Entire time range em vez de usar apenas o último intervalo. Observação: essa configuração está disponível apenas no Kibana 7.4 e posterior. Nas versões anteriores, em vez disso, você pode definir o intervalo de datas com um valor alto.
- Digite kibana_sample_data_flights como índice. Defina Time field como timestamp.
Agora que selecionou o índice e o intervalo de tempo, você pode configurar os dados que estão sendo mostrados.
- Volte para a guia Data e use Filter Ratio para calcular a porcentagem de um valor específico, como FlightDelayType: "No Delay".
- Filter Ratio seleciona dois conjuntos de documentos usando a sintaxe da string de consulta.
- Vá para a guia Options e selecione o formatador Percent.
- Se os quatro dígitos de precisão padrão forem altos demais para você, use uma string de formato personalizado para truncar os dígitos.
Para comparar vários valores em vez de um único valor, existem mais duas visualizações no Kibana que você pode usar. Se usar uma bucket aggregation para selecionar os valores para comparação, você poderá usar um gráfico de pizza ou uma tabela para converter cada valor em uma porcentagem.
Essas visualizações usam a agregação de blocos Terms no campo FlightDelayType e mostram a contagem por bloco convertida em uma porcentagem do total. Nos dados de amostra dos voos, existem apenas seis valores para FlightDelayType; portanto, essas porcentagens são precisas quando o tamanho de Terms é definido como 6 ou mais. Se seus dados tiverem mais valores exclusivos, será necessário ativar o bloco “Other" para cobrir 100% dos dados:
Qual é a proporção de cada tipo de atraso ao longo do tempo?
A mesma companhia aérea quer duas visualizações lado a lado em um dashboard: o resumo dos dados acima comparado com uma série temporal. Isso permitirá que eles se aprofundem em um intervalo de tempo específico e vejam o resumo e o detalhamento ao mesmo tempo.
Como os documentos de voo têm um campo de tempo, o TSVB é a opção mais poderosa para criar a visualização. Usando a mesma configuração acima, você pode usar Filter Ratio para dividir os voos "No Delay" pelo número total de voos por intervalo:
Para comparar mais de uma série, você pode criar várias proporções de filtro ou usar uma agregação para selecionar os grupos. O TSVB tem um modo para exibir várias séries escalonadas até 100%.
Para configurar a visualização de porcentagens empilhadas no TSVB, primeiro selecione os dados certos e, em seguida, configure suas agregações. Para selecionar os dados certos:
- Vá para TSVB, selecione Panel options e digite kibana_sample_data_flights como índice.
- Defina Time field como timestamp.
Para configurar suas agregações:
- Volte para a guia Data.
- Em Group by, selecione Terms de FlightDelayType.
- Vá para a guia Options.
- Selecione Data Formatter > Percent.
- Selecione Stacked > Percent.
- Selecione Split color theme > Rainbow.
Qual é a alteração nas vendas semana a semana?
Você tem um cliente de comércio eletrônico que armazena cada transação no índice kibana_sample_data_ecommerce. Ele quer uma visualização que exiba uma alteração percentual nas vendas semana a semana, um número que é crucial para seus negócios. Como há um componente de tempo para essa pergunta, você usará o TSVB para criar essa visualização. Também é possível criar gráficos semana a semana com o Timelion, mas isso não é abordado aqui.
Como você viu acima, o TSVB pode criar tanto uma visualização métrica quanto uma visualização de série temporal usando as mesmas agregações. Diferentemente do exemplo anterior, no qual você definiu Data timerange mode como Entire time range, nesta visualização, você mostrará apenas o dia mais recente dos dados em comparação com o mesmo dia uma semana antes. Como você pode ver, estas duas visualizações mostram que há uma diminuição de 5,2% nas vendas no dia mais recente dos dados:
Para criar isso, você precisa somar o total de vendas de cada dia e compará-lo com o total de sete dias atrás. A maneira mais fácil de fazer essa comparação é a agregação Serial Difference, que pega cada valor e subtrai de um intervalo específico anterior.
Configure o TSVB da mesma forma que nos exemplos anteriores. Lembre-se de selecionar o índice kibana_sample_data_ecommerce e definir Time field como order_date. Além disso, defina o intervalo como exatamente 1d. O intervalo padrão para o TSVB muda com base no intervalo de tempo geral, enquanto este cálculo espera que o intervalo seja sempre o mesmo.
Volte para a guia Data e selecione a agregação Sum para o campo taxful_total_price.
Em seguida, adicione uma agregação Serial Difference em Sum of taxful_total_price com uma defasagem de sete blocos, porque você já definiu o intervalo de tempo como um dia. Serial Difference subtrairá de cada dia o valor de sete blocos atrás, fornecendo a diferença total nas vendas semana a semana. Devido à forma como a métrica de diferença serial é calculada, ela sempre deixará os sete dias restantes em branco; portanto, você deve escolher um grande intervalo de tempo:
Por fim, você converterá da diferença semana a semana em uma porcentagem fazendo contas. Some as vendas atuais e a diferença e divida pelo valor atual:
O Painless script usado é ((params.total + params.diff) / params.total) - 1
Isso resulta na visualização vista acima. Para maior clareza, você também pode criar uma nova série usando um valor estático de 0 para destacar a linha de base da diferença de 0.
Agora você pode alternar entre as guias Time Series e Metric para decidir qual apresentação faz sentido para o seu caso de uso.
Conclusão
Esses são apenas alguns exemplos de como calcular e usar porcentagens de forma eficaz dentro do Kibana. Indo além do que descrevemos neste post, se quiser explorar mais opções de cálculos ao lidar com porcentagens, experimente usar o Canvas dentro do Kibana e sua capacidade de controlar a consulta e a exibição de dados.
Recursos adicionais
- Kibana best practices for visualizing time series data (Práticas recomendadas do Kibana para visualização de dados de série temporal) | Vídeos da Elastic
- A guide to scripting with the Painless Scripting Language (Um guia para elaboração de scripts com a linguagem de script Painless
- Canvas function reference (Referência para funções do Canvas)