오류는 요청이 전송될 때 발생하는 것 같습니다. (여기서는 Firefox의 네트워크 검사기를 보여주고 있습니다):
페이지를 로드할 때의 기본 파라미터 값(username=null, min_days=10)이 입력되는 대로 업데이트되지 않는 것으로 보입니다. username 입력창에 텍스트를 입력하거나 min_days 값을 변경할 때 콘솔에도 “Uncaught TypeError: t is undefined” 오류가 표시됩니다. 오류를 발생시키는 코드는 다음과 같습니다:
리포지토리를 포크하여 각 줄을 디버깅하는 수준까지는 아니지만, 문제를 추적할 수 있는 최선의 방법입니다. 문제를 보고하고 싶었고, 다른 분들도 동일한 문제를 겪고 있는지 궁금합니다.
@piffy님, 리포트를 올려주셔서 감사합니다. 최근 data-explorer 플러그인에 몇 가지 변경 사항이 있었기 때문에 이 문제가 실제로 존재할 가능성이 높습니다. 사용자명(usernames) 입력을 사용하여 여러 쿼리를 테스트해 보았으나, OP에서 링크된 문제를 재현하지는 못했습니다. 테스트해 볼 수 있도록 해당 쿼리를 여기에 공유해 주시겠습니까?
--[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
Isaac가 그 부분을 확인하는 동안, 재미있는 추가 팁으로 user_id 파라미터를 사용하면 깔끔한 자동완성 파라미터 상자를 얻을 수 있습니다. 예:
-- [params]
-- user_id :user
-- 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 = :user
)
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