PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como criar um total de execução do período contínuo


Saber o total de visitas, usuários ou atividades em um período contínuo é uma boa maneira de analisar o desempenho do seu site ou aplicativo. O termo de pesquisa “relatório contínuo de 12 meses” tem mais de 12 milhões de resultados de pesquisa, e os especialistas acreditam que o relatório contínuo é uma das melhores maneiras de mostrar tendências. Substituir seu período de tempo por uma visualização anual ou de 12 meses, dependendo do seu caso de uso, é igualmente perspicaz.

Por exemplo, analisar as tendências diárias dos visitantes do site durante um período de seis meses pode mostrar informações valiosas, mas não mostra tendências em períodos menores dentro do escopo do gráfico. Ele mostrará apenas a tendência geral.



Se você deseja obter insights para identificar períodos de crescimento ou declínio, uma análise de tendência contínua pode ajudá-lo a identificar esses períodos. O gráfico abaixo mostra os mesmos dados vistos acima, dispostos em um intervalo diário, em um formato de tendência de 7 dias contínuos.



Com esta visualização contínua do período de 7 dias, você pode ver mais do que apenas a tendência geral vista no gráfico de linhas do total diário. Aqui você pode ver microtendências na experiência geral que podem revelar informações muito mais perspicazes para sua organização. Em nosso exemplo aqui, podemos ver que a tendência geral de visitantes por dia é de alta em nosso primeiro gráfico, mas nosso segundo revela 7 períodos consecutivos dentro de nossa tendência geral que têm uma direção de queda. Esse tipo de insight pode nos ajudar a identificar períodos de tendência de queda que podem coincidir com esforços de marketing que funcionaram ou não.

A consulta


Para construir esta consulta vamos querer saber algumas coisas:
  1. O período de rolagem. Exemplo 12 meses, 30 dias ou 7 dias. No nosso caso:7 dias.
  2. A métrica que estamos analisando:visitantes por dia.

A consulta será composta por diferentes subconsultas. Primeiro, use generate_series para atribuir linhas em uma tabela para todas as datas em um intervalo de datas do início ao fim do intervalo de datas na coluna Visitors.created_date, que será chamada na instrução SELECT principal. Essa subconsulta servirá como a tabela da qual selecionaremos.

Uma segunda subconsulta irá para a seção principal e retornará a contagem de todos os visitantes únicos que visitaram nosso site em um período de 7 dias. Esta subconsulta servirá como sua própria coluna na consulta principal e contará os visitantes distintos do “dia” a 7 dias anteriores ao “dia”.

Juntando tudo, podemos gerar uma tendência contínua de nosso Visitante por dia em um período de 7 dias:
    SELECT
        day,
        (
          SELECT
              COUNT(DISTINCT "Visitors"."visitor_id") AS "Visitors"
          FROM
              "public"."visitors" AS "Visitors"
          WHERE  
              "Visitors"."created_date" BETWEEN b.day - 7 AND b.day + 1
        )
    FROM  (SELECT
            generate_series(
                            MIN(DATE_TRUNC('day', "Visitors"."created_date")::DATE),
                            MAX(DATE_TRUNC('day', "Visitors"."created_date")::DATE),
                            '1d')::date as day
            FROM "public"."visitors" AS "Visitors"
          ) as b
    GROUP BY day                        
    ORDER BY day

Testando a matemática. Podemos testar a matemática aqui na tabela a seguir. Veja as etapas de atraso que atribuem os 7 dias anteriores à coluna Contagem e a coluna total que será igual à coluna Visitantes.



Com nossa matemática confirmada, podemos confiar nessa função para nos dar uma visão geral dos totais em execução de períodos contínuos. A consulta acima pode ser ajustada para mostrar diferentes períodos de tempo dependendo do seu caso de uso.