Отчет по панели управления: сводные просмотры страниц с определением браузера

Это SQL-версия отчёта «Dashboard» для сводных просмотров страниц с определением браузера.

Этот отчёт Data Explorer предоставляет ежедневную статистику просмотров страниц сайта с определением браузера за указанный период. Просмотры страниц классифицируются на четыре типа:

  • Просмотры из авторизованного браузера
  • Просмотры из анонимного браузера
  • Просмотры от известных краулеров
  • Другие просмотры страниц
-- [params]
-- date :start_date
-- date :end_date

SELECT
  ar.date::date AS "date",
  SUM(CASE WHEN ar.req_type = 15 THEN count ELSE 0 END) AS "Logged In Browser",
  SUM(CASE WHEN ar.req_type = 13 THEN count ELSE 0 END) AS "Anonymous Browser",
  SUM(CASE WHEN ar.req_type = 6 THEN count ELSE 0 END) AS "Known Crawler",
  SUM(
    CASE WHEN ar.req_type = 8 THEN count
        WHEN ar.req_type = 7 THEN count
        WHEN ar.req_type = 13 THEN -count
        WHEN ar.req_type = 15 THEN -count
        ELSE 0
    END
  ) AS "Other pageviews"
FROM
  application_requests ar
WHERE
  ar.date::date >= :start_date
  AND ar.date <= :end_date
GROUP BY
  ar.date
ORDER BY
  ar.date ASC

Пояснение к SQL-запросу

  • Параметры:
    • :start_date — начальная дата отчёта.
    • :end_date — конечная дата отчёта.
    • Оба параметра даты принимают формат YYYY-MM-DD.
  • Пункт SELECT:
    • ar.date::date AS "date": Преобразует поле date в тип date и присваивает ему псевдоним «date».
    • SUM(CASE WHEN ar.req_type = 15 THEN count ELSE 0 END) AS "Logged In Browser": Суммирует значения счётчика, где req_type равен 15, и присваивает результату псевдоним «Logged In Browser».
    • SUM(CASE WHEN ar.req_type = 13 THEN count ELSE 0 END) AS "Anonymous Browser": Суммирует значения счётчика, где req_type равен 13, и присваивает результату псевдоним «Anonymous Browser».
    • SUM(CASE WHEN ar.req_type = 6 THEN count ELSE 0 END) AS "Known Crawler": Суммирует значения счётчика, где req_type равен 6, и присваивает результату псевдоним «Known Crawler».
    • SUM(CASE WHEN ar.req_type = 8 THEN count WHEN ar.req_type = 7 THEN count WHEN ar.req_type = 13 THEN -count WHEN ar.req_type = 15 THEN -count ELSE 0 END) AS "Other pageviews": Суммирует значения счётчика для других типов запросов, корректируя значения для req_type 13 и 15 путём их вычитания, и присваивает результату псевдоним «Other pageviews».
  • Пункт FROM:
    • FROM application_requests ar: Указывает таблицу application_requests как источник данных, присваивая ей псевдоним ar.
  • Пункт WHERE:
    • ar.date::date >= :start_date AND ar.date <= :end_date: Фильтрует записи, оставляя только те, где date попадает в указанный диапазон от :start_date до :end_date.
  • Пункт GROUP BY:
    • GROUP BY ar.date: Группирует результаты по полю date для агрегации счётчиков по каждому дню.
  • Пункт ORDER BY:
    • ORDER BY ar.date ASC: Сортирует результаты по возрастанию поля date.

Результаты

Результаты этого запроса предоставят ежедневную разбивку просмотров страниц по типу браузера или краулера. Каждая строка в наборе результатов будет содержать:

  • date: Конкретная дата.
  • Logged In Browser: Общее количество просмотров страниц от авторизованных пользователей.
  • Anonymous Browser: Общее количество просмотров страниц от анонимных пользователей.
  • Known Crawler: Общее количество просмотров страниц от известных краулеров.
  • Other pageviews: Общее количество просмотров страниц других типов.

Пример результатов

date Logged In Browser Anonymous Browser Known Crawler Other pageviews
2024-05-02 1238 1085 2727 3983
2024-05-03 1039 1068 5718 3958
2024-05-04 572 628 3847 3761
2024-05-05 447 551 2093 3773

Странно. У меня ноль для обоих браузеров. Учитываются только боты.

В отчёте панели управления «Совокупные просмотры страниц с определением браузера» также отображаются только боты?

Вы имеете в виду тот экспериментальный? Он работает и всё показывает отлично.

Этот отчет был добавлен в Discourse 25 апреля 2024 года, и в нем не будут отображаться данные для представлений «Браузер с авторизацией» или «Анонимный браузер» за даты до этого дня.

Если вы не видите результатов для представлений «Браузер с авторизацией» или «Анонимный браузер» после 25 апреля 2024 года, вам необходимо обновить ваш экземпляр Discourse до последней версии.

Я wondered, почему SQL-фрагмент не показывал просмотры от пользователей, только от ботов. А потом я попробовал june. Плюс да, мой инстанс обновляется примерно три раза в неделю :winking_face_with_tongue:

(Чёрт, эти виртуальные клавиатуры… слишком легко нажать не туда :smirking_face: :man_facepalming:)

Но я пересобрал без Data Explorer, а сразу после этого — с ним, и цифры появились.

Так что, полагаю, это останется ещё одним случаем из «Сумеречной зоны». Возможно ли, чтобы с SQL была какая-то проблема с кэшированием? :flushed_face: