배지 자격 요건 확인

사용자 중 한 명이 신고하여 특정 배지를 받아야 한다고 느꼈다고 했습니다. 배지 관리 페이지를 살펴보고 Preview granted badges 쿼리를 실행해 보았지만, 해당 사용자는 목록에 없습니다.

잠재적인 자격 요건을 확인하는 가장 좋은 방법은 Data Explorer를 사용하여 DB에서 더 많은 정보를 가져오는 것인가요?

실제 배지 페이지(관리자 대시보드를 통해)에서 쿼리 결과를 미리 볼 수 있습니다. 말씀하신 대로 이미 그렇게 하신 것으로 보입니다.

해당 쿼리를 Data Explorer에서 실행하면 동일한 결과가 반환되어야 합니다.

여전히 해결이 안 되면 이메일을 보내 주시면 조사를 도와드리겠습니다.

Aficionado(100일 연속) 배지에 대한 질문을 많이 받습니다. 보통 문제는 사용자가 자신의 지역과 서버 시간 사이의 시간대 차이로 인해 하루 이상을 놓쳤기 때문입니다.

배지 지급에 사용되는 쿼리는 항상 조금 혼란스러웠습니다. 이제 이해가 가는 것 같습니다. 여기 유사한 논리를 사용하는 Data Explorer 쿼리가 있습니다. 이는 사용자의 연속 방문 기간을 반환합니다. 각 연속 방문 기간에 대해 시작 날짜, 연속 일 수, 종료 날짜를 반환합니다. 기본적으로 10회 이상의 방문이 있는 모든 기간을 반환합니다. 사용자가 놓친 날짜를 찾으려면 min_days 매개변수를 1로 설정하십시오.

결과 첫 번째 행에서 반환되는 period_end 값이 쿼리를 실행하는 현재 날짜와 같다면, 해당 사용자는 아직 배지 획득 가능성이 남아 있습니다.

--[params]
-- string :username
-- int :min_days = 10

WITH consecutive_visits AS (
  SELECT user_id,
       visited_at,
       -- s 값은 각 연속 날짜 그룹에서 동일합니다
       visited_at - (DENSE_RANK() OVER (PARTITION BY user_id ORDER BY visited_at))::int s
    FROM user_visits
    WHERE user_id = (SELECT id FROM users WHERE username = :username)
)

SELECT
MIN(visited_at) period_start,
COUNT(*) AS consecutive_days,
MAX(visited_at) period_end
FROM consecutive_visits
GROUP BY user_id, s
HAVING COUNT(*) >= :min_days
ORDER BY period_start DESC

완벽하네요, 제가 찾던 통찰을 얻었습니다 :slight_smile: