답변이 늦어서 죄송합니다. 산타바바라에 비가 조금 더 많이 내렸더니 다른 일로 정신이 팔려 있었네요.
모든 사용자는 직접 가입하며, 이렇게 생성된 계정은 게시판에 접근하기 전에 관리자 승인 절차를 거칩니다. 사용자가 21:00에 가입하고 01:00에 승인되면 자정을 넘긴 경우 두 날로 표시될 수 있다는 문제를 예상했지만, 제가 이전에 게시한 3일 차 사용자 사례가 있습니다.
제가 그렇게 세심하게 확인하지 않아서 이 문제가 얼마나 오랫동안 지속되어 왔는지는 알 수 없지만, 우리 관리자 중 한 명이 이를 발견했습니다. 새 사용자가 가입할 때마다 이런 현상이 반복되는지 확인하기 위해 유입되는 가입 건을 주시하고 있습니다.
이 문제를 해결하는 데 도움이 되는 Data Explorer 쿼리가 있다면 알려주시면, 제가 실행한 후 결과를 보고하겠습니다.
SELECT u.id AS user_id,
u.created_at,
u.approved_at,
us.days_visited
FROM users u
JOIN user_stats us ON u.id = us.user_id
WHERE u.approved_at IS NOT NULL
ORDER BY u.created_at DESC
또는 가독성을 높이기 위해 약간 더 추가한 쿼리:
SELECT u.id AS user_id,
CONCAT(u.created_at::date, ' at ', to_char(u.created_at, 'HH:MM')) "user_created",
CONCAT(u.approved_at::date, ' at ', to_char(u.approved_at, 'HH:MM')) "user_approved",
us.days_visited
FROM users u
JOIN user_stats us ON u.id = us.user_id
WHERE u.approved_at IS NOT NULL
ORDER BY u.created_at DESC
메타에서 이런 일이 일어나는 것을 보니 반갑습니다. 제가 혼자서만 이렇게 생각하는 것 같으면 뭔가 잘못하고 있는 건지 모르겠거든요
"생성: 1일 전"이라는 표시를 어제라고 해석했습니다. 계정의 생성 타임스탬프는 사용자가 승인된 시점이 아니라 가입한 시점이기 때문이죠 (가입은 방문에 해당하므로 이는 합리적입니다). UTC 날짜 변경으로 인해 "2일 방문"은 볼 수 있었지만 "3일 방문"까지는 도달하지 못했습니다. 만약 그렇다면 "생성"은 "2일 전"이어야 하지 않나요?
해당 "3일 사용자"는 1월 11일 이후로 다시 접속하지 않았으므로, 현재 보고서는 1월 9일부터 1월 11일까지의 기간을 나타내며 정확해 보입니다.
하지만 데이터 탐색기(Data Explorer)에는 생성일이 1월 9일이 아닌 1월 10일로 표시됩니다. 로컬 시간과 UTC 간의 차이 때문일까요? 시간 보고에 시간대(TZ)가 무엇인지 명시하는 것이 어떨까요? 이 두 쿼리는 1분 간격으로 실행되었습니다.
디스코스(Discourse)가 "방문"으로 간주하는 내용과 그 지속 시간을 기록합니까? 그렇다면 사용자의 사이트 접속 날짜/시간을 조회할 수 있을까요? 바쁜 사이트에서는 데이터 양이 많을 것이므로, 최근 X일분만 유지하는 방식도 고려해볼 수 있겠습니다. 그러면 타임라인에 매핑하는 것이 가능할 것입니다.
테스트 계정을 몇 개 만들어 보고서를 확인해볼 수도 있습니다. 큰 문제는 아니지만, 보고의 내부 계산 방식을 이해하지 못하면 다른 통계 수치에 대해 의문이 들 수밖에 없습니다.
수정: 이전에 게시했던 “3일” 사용자를 테스트해 보았습니다. 쿼리를 수정하여 처음 확인된 시간과 마지막으로 확인된 시간을 포함시켰더니, 해당 사용자는 총 44시간 남짓 접속하여 UTC 기준 자정(00:00) 세 번에 걸쳐 활동한 것으로 나타났습니다. 그래서 3일로 집계된 것입니다.
사용자 활동(User Activity)을 표시할 때 뭔가 이상한 일이 일어나고 있는 것으로 보입니다. "1일 전 생성"이라고 보고하면서 "방문일수 3일"을 표시하는 것은 모순됩니다. 이는 데이터를 과도하게 단순화한 결과로 보입니다.
제 생각에는 UTC 타임스탬프를 있는 그대로 보고하고 해석은 사용자에게 맡기는 것이 더 나을 것 같습니다. "1일 전"이라는 표현은 불확실합니다. 과거로 얼마나 거슬러 올라가야 1일로 계산될까요? UTC 자정(00:00)을 넘기면 되는 것 같습니다. 그렇다면 UTC 23:59에 생성된 사용자가 UTC 00:01에 사용자 활동을 조회할 때 "1일 전"이 되는 건가요?
기술적으로는 맞을 수 있습니다. 만약 제가 UTC 시간대에 있다면 그 사용자는 "어제, 즉 1일 전"에 생성된 것이 맞습니다. 하지만 다른 시간대에서는 그렇지 않거나, 그렇게 이해되지 않을 것입니다. 관리자 관점에서 활동을 이해하는 데 이것이 정말 유용한지 확신이 서지 않습니다.
아직 제 이해가 완전하지 않다는 것을 깨달았으며, 제 학습을 계속 도와주셔서 모두 감사합니다. 당분간은 우리 moderators(모드)에게 상세한 정확도가 필요할 경우 사용자 이벤트를 파악하기 위해 DE 쿼리를 사용하도록 조언해 두었습니다.