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.

Visualização de linha por região

Visualização de linha por porcentagens de região

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.

Voos no horário divididos pelo total 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.

Porcentagem de voos no horário

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:

  1. Vá para TSVB e escolha a guia Metric:Escolha a guia Metric
  2. Selecione a guia Panel options:
  3. Guia Panel options
  1. 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.
  2. Digite kibana_sample_data_flights como índice. Defina Time field como timestamp.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.

  1. Volte para a guia Data e use Filter Ratio para calcular a porcentagem de um valor específico, como FlightDelayType: "No Delay".Use Filter Ratio
  1. 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.Uso de uma string de formato personalizado

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.

Gráfico de pizza para converter cada valor em porcentagem

Visualização de tabela para converter cada valor em 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:

Ativar o bloco Other

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:

Visualização de voos no horário

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%.

Visualização de várias séries

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:

  1. Vá para TSVB, selecione Panel options e digite kibana_sample_data_flights como índice.
  2. Defina Time field como timestamp.Defina Time field como timestamp

Para configurar suas agregações:

  1. Volte para a guia Data.
  2. Em Group by, selecione Terms de FlightDelayType.
  3. Vá para a guia Options.Seleções na guia Options
  4. Selecione Data Formatter > Percent.
  5. Selecione Stacked > Percent.
  6. Selecione stacked data-percent
  7. 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:

Diminuição nas vendas

Visualização mostrando a diminuição

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.

Escolha da amostra de dados

Volte para a guia Data e selecione a agregação Sum para o campo taxful_total_price.

Agregação de soma

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:

Agregação de diferença de série

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:

Uso de uma fórmula para calcular a porcentagem

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