Отчет группы Data Explorer: ошибка параметра

Я только что обновился до последней версии Data Explorer перед публикацией этого сообщения и могу подтвердить, что эта проблема всё ещё сохраняется у меня.

В плагине Data Explorer есть функция, позволяющая предоставлять доступ к запросам для групп. Я настроил это для запроса, подсчитывающего количество последовательных дней посещения, так как у меня есть пользователи, которые отчаянно хотят узнать, насколько они близки к бейджам за xxx дней посещения.

Это работало до недавнего времени. Теперь я получаю эту ошибку.

Похоже, ошибка вызвана запросом, который отправляется (здесь я показываю инспектор сети в Firefox):
image

Кажется, что значения параметров не обновляются по мере их ввода (username=null, min_days=10 — это параметры по умолчанию при загрузке страницы). В консоли также возникает ошибка “Uncaught TypeError: t is undefined” при вводе текста в поле username или изменении значения min_days. Ошибка возникает в этой строке:

Это лучшее, что я могу сделать для отслеживания проблемы, не форкая репозиторий и не отлаживая каждую строку. Просто хотел сообщить об этой проблеме и также интересно, сталкиваются ли с ней другие.

4 лайка

Спасибо @piffy за отчет. Мы недавно внесли некоторые изменения в плагин data-explorer, поэтому это вполне может быть верным. Я протестировал несколько запросов с вводом имен пользователей и не столкнулся с проблемой, описанной в оригинальном посте. Не могли бы вы оставить здесь свой запрос, чтобы я мог его проверить?

Спасибо :slight_smile:

5 лайков
--[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

Я пробовал включить безопасный режим (только официальные плагины), но проблема осталась.

1 лайк

Спасибо, я посмотрю.

2 лайка

Пока Исаак разбирается с этим, вот ещё один полезный совет: вы также можете использовать параметр 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

5 лайков

Спасибо, приятно знать! Это гораздо понятнее, чем поле для свободного ввода текста.

3 лайка

Извините за задержку, @piffy. Это уже исправлено :slight_smile:

4 лайка

Это работает, большое спасибо! Мои пользователи очень ценят эту функцию

3 лайка