Como obter pageviews mensais programaticamente? Preferencialmente usando o Data Explorer

E aí, comunidade!

Por acaso alguém já escreveu uma consulta usando o Data Explorer para buscar o número de visualizações de página mensais?

Existe alguma outra maneira programática de obter esses números além de acessar meu painel manualmente?

Esta é a consulta por trás do relatório Consolidated Pageviews, espero que ajude.

-- [params]
-- date :start_date
-- date :end_date

SELECT
    ar.date,
    CASE 
      WHEN ar.req_type=6 THEN 'Crawlers'
      WHEN ar.req_type=7 THEN 'Usuários logados'
      WHEN ar.req_type=8 THEN 'Usuários anônimos'
    END,
    ar.count AS views
FROM application_requests ar
WHERE req_type IN (6,7,8)
    AND ar.date::date BETWEEN :start_date::date
	AND :end_date::date
ORDER BY ar.date ASC, ar.req_type

Perfeito! Isso ajuda um pouco!

É possível buscar esse número:

Esta consulta lista o número total de visualizações de página no período.

-- [params]
-- date :start_date
-- date :end_date

WITH data AS (
    SELECT
        ar.date,
        CASE 
          WHEN ar.req_type=6 THEN 'Robôs de indexação'
          WHEN ar.req_type=7 THEN 'Usuários logados'
          WHEN ar.req_type=8 THEN 'Usuários anônimos'
        END AS Pageview,
        ar.count AS views
    FROM application_requests ar
    WHERE req_type IN (6,7,8)
        AND ar.date::date BETWEEN :start_date::date
    	AND :end_date::date
    ORDER BY ar.date ASC, ar.req_type
)

SELECT Pageview, SUM(views) qtt_views
FROM data
GROUP BY Pageview

Perfeito! Era isso que eu estava procurando.

Na verdade, tenho mais uma pergunta. Talvez isso não seja muito trabalhoso.

Existe uma maneira de obter os resultados no formato a seguir usando sum:

Sim, é possível. Neste caso, você precisa ajustar primeiro o formato do campo de data e, em seguida, ajustar o agrupamento. Abaixo está a consulta ajustada.

-- [params]
-- date :start_date
-- date :end_date

WITH data AS 
    (SELECT
        date_part('month', ar.date) AS month,
        date_part('year', ar.date) AS year,
        CASE 
          WHEN ar.req_type=6 THEN 'Crawlers'
          WHEN ar.req_type=7 THEN 'Logged in users'
          WHEN ar.req_type=8 THEN 'Anonymous users'
        END AS pageview,
        ar.count AS views
    FROM application_requests ar
    WHERE req_type IN (6,7,8)
        AND ar.date::date BETWEEN :start_date::date
    	AND :end_date::date
    ORDER BY ar.date ASC, ar.req_type
    )
    
  SELECT 
    month, 
    year, 
    sum(views) AS qtt_views
  FROM  data 
  GROUP BY year, month
  ORDER BY year DESC, month ASC
month year count
1 2021 1000
2 2021 500
1 2020 1500
2 2020 2000
3 2020 2500

Perfeito! Obrigado pela ajuda!