대시보드 보고서 - 익명

이것은 익명 사용자용 대시보드 보고서의 SQL 버전입니다.

이 보고서는 특정 날짜 범위 내에서 익명 사용자(계정에 로그인하지 않은 사용자)가 사이트를 방문한 일별 페이지뷰 수를 보여줍니다.

--[params]
-- date :start_date = 2023-12-01
-- date :end_date = 2024-01-01

SELECT 
    date, 
    SUM(count) AS pageviews
FROM
    application_requests
WHERE
    req_type = 8
    AND date BETWEEN :start_date AND :end_date
GROUP BY
    date
ORDER BY
     date

SQL 쿼리 설명

  • 파라미터 정의: 쿼리는 두 개의 파라미터인 :start_date와 :end_date를 정의하여 시작하며, 이는 데이터를 원하는 시간 범위로 필터링하는 데 사용됩니다. 두 날짜 파라미터 모두 YYYY-MM-DD 날짜 형식을 받아들입니다.
  • 데이터 선택: date 컬럼과 count의 합계를 선택하며, 이 합계는 pageviews로 별칭이 지정됩니다. count는 각 레코드의 페이지뷰 수를 나타냅니다.
  • 데이터 소스: 데이터는 애플리케이션에 대해 수행된 다양한 유형의 요청을 기록하는 application_requests 테이블에서 가져옵니다.
  • 필터링: WHERE 절은 page_view_anon 유형(req_type = 8)인 레코드와 지정된 날짜 범위에 해당하는 레코드만 포함하도록 필터링합니다.
  • 집계: GROUP BY 절은 결과를 date 컬럼별로 그룹화하여 SUM 함수가 각 날짜의 총 페이지뷰를 계산할 수 있게 합니다.
  • 정렬: 마지막으로, 결과는 date 기준 오름차순으로 정렬되어 익명 페이지뷰의 시간 순서대로 된 뷰를 제공합니다.

결과 예시

date pageviews
2023-12-01 12345
2023-12-02 11346
2023-12-03 18344
2023-12-04 15344
2023-12-05 12890
… …

req_type에 대한 참고

application_requests 테이블의 req_type 컬럼은 요청의 유형을 분류합니다. 이 쿼리에서는 익명 페이지뷰에 해당하는 req_type = 8에 관심이 있습니다.

기타 req_type 값은 크롤러 페이지뷰, 로그인된 페이지뷰, 다양한 HTTP 응답 상태 코드 등 다른 종류의 요청을 나타냅니다.

모든 req_type 값:

0. http_total
1. http_2xx
2. http_background
3. http_3xx
4. http_4xx
5. http_5xx
6. page_view_crawler
7. page_view_logged_in
8. page_view_anon
9. page_view_logged_in_mobile
10. page_view_anon_mobile
11. api
12. user_api

이건 모바일 번호도 포함하려면 req_type IN (8,10)으로 해야 하지 않나요?

처음에는 저도 그렇게 생각했지만, 관리자 대시보드 보고서는 page_view_anon만 포함하고 page_view_anon_mobile은 포함하지 않습니다.

현재 이 쿼리의 방식은 대시보드 보고서와 정확히 일치하며, 쿼리를 실행한 후 대시보드 보고서 결과와 비교해 이를 확인할 수 있습니다.

이로 인해 관련은 있지만 다른 질문이 떠오르는데, 대시보드 보고서에 익명 모바일 페이지뷰를 포함해야 할까요?

직관적으로는 포함해야 한다고 생각하지만, 이 부분에 대한 다른 의견도 들어보고 싶습니다.

포함하지 말아야 할 이유는 떠오르지 않습니다.

아, 죄송합니다. 제 코멘트가 더 구체적이었어야 했는데 그러지 못했네요. 이 쿼리가 대시보드 리포트의 정확한 복본이라는 점은 알아차렸고, 대시보드 리포트 자체에 이 내용이 포함되어야 한다는 뜻이었어요. :pray:

죄송합니다. 여기는 아침이라 커피가 더 필요해서인지 언어 장벽에 크게 부딪혔네요.

지금 모바일도 포함해야 한다는 뜻으로 이해해야 하나요? 즉, 현재 모바일이 제외되어 있다는 의미인가요? 아니면 실제 총 조회수와 모바일 조회수를 두 가지 지표로 표시해야 하나요?

현재 대시보드 보고서에는 req_type(8)만 포함된 것으로 보이며, 이는 데스크톱 익명 뷰만 집계되고 있음을 의미합니다.

모바일 데이터도 함께 집계되지 않는 이유가 무엇인지 궁금합니다(총합으로만 표시하거나, 더 자세한 내용을 확인하기 위해 두 개의 수치로 나누어 표시하는 방식이 모두 가능합니다).

그건 사실이 아니거나, 봇까지 포함해서 집계하고 있는 겁니다. 제 기준으로는 하루에 1,000건 정도가 정상적인 수치로 보이거든요. 그런데 제 데스크톱 트래픽은 아주 적은 편입니다. 만약 데스크톱이 1,000건이고 모바일이 9,000건(네, 비율이 정확히 그렇습니다)이라면, 그 수치는 절대 맞을 수 없습니다.

음. 확실하지 않네요. 코드는 여기 있는 것 같습니다:

page_view_anon_mobile이 page_view_anon의 부분집합일 가능성이 있습니다. 이 코드를 읽는 법을 아는 누군가가 조언을 해주시면 좋겠습니다. :slight_smile: :crossed_fingers:

아, 그렇군요. 그 로직은 페이지 뷰가 모바일 기기에서 온 것으로 분류되었든 아니든 page_view_anon을 증가시킵니다. 몇 가지 쿼리를 업데이트해야 할 것 같습니다 . . .