대시보드 보고서 - 통합 페이지뷰

이것은 통합 페이지뷰 대시보드 보고서의 SQL 버전입니다.

이 SQL 보고서는 Discourse 사이트에서 로그인한 사용자, 익명 사용자 및 크롤러의 페이지뷰 일별 수를 제공합니다.

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

SELECT
    ar.date::date AS "date",
    SUM(ar.count) AS "Total Views",
    SUM(CASE WHEN ar.req_type=6 THEN ar.count ELSE 0 END) AS "Crawler Views",
    SUM(CASE WHEN ar.req_type=7 THEN ar.count ELSE 0 END) AS "Logged in User Views",
    SUM(CASE WHEN ar.req_type=8 THEN ar.count ELSE 0 END) AS "Anonymous User Views"
FROM application_requests ar
WHERE req_type IN (6,7,8)
    AND ar.date::date BETWEEN :start_date AND :end_date
GROUP BY date
ORDER BY date

SQL 쿼리 설명

이 쿼리는 포럼에 대한 다양한 유형의 요청을 기록하는 application_requests 테이블에서 작동합니다. req_type 값으로 식별되는 세 가지 특정 유형의 요청에 초점을 맞춥니다:

  • 6: 크롤러 뷰 (Crawler Views)
  • 7: 로그인한 사용자 뷰 (Logged in User Views)
  • 8: 익명 사용자 뷰 (Anonymous User Views)

쿼리가 수행하는 작업의 단계별 설명은 다음과 같습니다:

  • 파라미터: 쿼리는 두 개의 파라미터인 :start_date와 :end_date를 받아 사용자가 보고서의 날짜 범위를 지정할 수 있도록 합니다. 두 날짜 파라미터 모두 YYYY-MM-DD 형식의 날짜를 허용합니다.
  • 선택: 쿼리는 요청 날짜(ar.date)를 선택하고 이를 date 타입으로 변환합니다. 또한 지정된 범위 내 각 날짜에 대해 총 뷰 수와 유형별(크롤러, 로그인한 사용자, 익명 사용자) 뷰 수를 계산합니다.
  • 합산: 각 뷰 유형에 대해 count 열을 합산합니다. CASE 문은 req_type에 따라 조건부로 합산에 포함할 수 있도록 사용됩니다.
  • 필터링: WHERE 절은 req_type 값이 6, 7 또는 8이고 지정된 :start_date와 :end_date 사이에 있는 날짜를 가진 레코드만 포함하도록 필터링합니다.
  • 그룹핑: 쿼리는 결과를 날짜별로 그룹화하여 각 뷰 유형의 수가 하루 단위로 집계되도록 보장합니다.
  • 정렬: 결과는 날짜 순으로 정렬되어 트래픽의 시간적 흐름을 제공합니다.

결과 예시

date Total Views Crawler Views Logged in User Views Anonymous User Views
2023-11-18 5608 3052 565 1928
2023-11-19 9207 6564 470 2273
2023-11-20 6271 2631 1016 2924

@SaraDev 관리자 대시보드를 살펴보니 req_type = 13 (page_view_anon_browser)과 15 (page_view_logged_in_browser)가 표시되고 있습니다. 이건 버그인가요? 서브 요청 유형에 대한 설명이 있나요? 예를 들어, 로그인된 유형들의 어떤 조합이 705라는 숫자를 만들어내는지 이해가 되지 않습니다.

application_requests 테이블의 req_type 필드는 Discourse에서 다음과 같은 유형의 애플리케이션 요청에 해당합니다:

  1. http_total
  2. http_2xx
  3. http_background
  4. http_3xx
  5. http_4xx
  6. http_5xx
  7. page_view_crawler
  8. page_view_logged_in
  9. page_view_anon
  10. page_view_logged_in_mobile
  11. page_view_anon_mobile
  12. api
  13. user_api
  14. page_view_anon_browser
  15. page_view_anon_browser_mobile
  16. page_view_logged_in_browser
  17. page_view_logged_in_browser_mobile

이 정보는 데이터베이스 테이블 및 스키마를 살펴볼 때 Data Explorer에서 직접 확인할 수도 있습니다.

2024년 9월에 페이지뷰 추적 및 집계 방식이 개선되었습니다. 변경된 사항에 대한 설명을 참고할 수 있습니다.

대시보드에서 확인하는 지표는 아마도 페이지뷰 추적을 위한 새로운 “Site Traffic” 방식을 사용하고 있을 것이며, 이 방식에 해당하는 SQL은 여기에서 찾을 수 있습니다: Dashboard Report - Site Traffic.

사라, 감사합니다. Dashboard Report - Site Traffic 주제에서 제시된 쿼리를 통해 13과 15를 사용하는 이유에 대한 제 질문에 답을 얻을 수 있었고, 왜 13 + 14가 8과 같지 않은지도 알게 되었습니다.