Rapport du groupe d'exploration de données - bug de paramètre

Je viens de mettre à jour vers la dernière version de Data Explorer avant de poster ceci et je peux confirmer que ce problème est toujours présent pour moi.

Sur le plugin Data Explorer, il y a une fonctionnalité qui vous permet d’exposer des requêtes à des groupes. Je l’ai fait pour la requête qui compte les jours consécutifs visités car j’ai des utilisateurs désireux de savoir à quel point ils sont proches des badges de xxx jours visités.

Cela fonctionnait jusqu’à récemment. Maintenant, j’obtiens cette erreur.

L’erreur semble être causée par la requête envoyée (ici, je montre l’inspecteur réseau sur Firefox) :
image

Il semble qu’il ne mette pas à jour les valeurs des paramètres au fur et à mesure de leur saisie (username=null, min_days=10 sont les paramètres par défaut lorsque vous chargez la page). La console donne également une erreur “Uncaught TypeError: t is undefined” lorsque vous entrez du texte dans la case username ou que vous modifiez la valeur min_days. Cette ligne provoque l’erreur :

C’est le mieux que je puisse faire pour retracer le problème sans devoir forker le dépôt et déboguer chaque ligne. Je voulais juste signaler le problème et je suis également curieux de savoir si d’autres ont le même problème.

4 « J'aime »

Merci @piffy pour le rapport. Nous avons récemment apporté quelques modifications au plugin data-explorer, donc cela pourrait très bien être valide. J’ai testé plusieurs requêtes avec une entrée de nom d’utilisateur et je n’ai pas rencontré le problème lié dans le message initial. Pourriez-vous poster votre requête ici afin que je puisse la tester ?

Merci :slight_smile:

5 « J'aime »
--[params]
-- string :username
-- int :min_days = 10

WITH consecutive_visits AS (
  SELECT user_id,
       visited_at,
       -- La valeur de s sera la même pour chaque groupe de jours consécutifs
       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

J’ai essayé avec le mode sans échec activé (uniquement les plugins officiels) et j’ai le même problème.

1 « J'aime »

Merci, je vais y jeter un œil.

2 « J'aime »

En guise de conseil supplémentaire amusant pendant qu’Isaac examine cela, vous pouvez également utiliser le paramètre user_id pour obtenir une boîte de paramètres de saisie semi-automatique élégante. Par exemple :

-- [params]
-- user_id :user
-- int :min_days = 10

WITH consecutive_visits AS (
  SELECT user_id,
       visited_at,
       -- La valeur de s sera la même pour chaque groupe de jours consécutifs
       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 « J'aime »

Merci, c’est bon à savoir ! C’est beaucoup plus logique qu’une zone de texte libre.

3 « J'aime »

Désolé pour le retard @piffy. Cela devrait être corrigé maintenant :slight_smile:

4 « J'aime »

Ça fonctionne, merci beaucoup ! Mes utilisateurs apprécient vraiment cette fonctionnalité.

3 « J'aime »