Ho appena aggiornato a l’ultima versione di Data Explorer prima di pubblicare questo e posso confermare che questo problema è ancora presente per me.
Sul plugin Data Explorer c’è una funzionalità che ti permette di esporre query a gruppi. L’ho fatto per la query che conta i giorni consecutivi visitati perché ho utenti desiderosi di sapere quanto sono vicini ai badge per xxx giorni visitati.
L’errore sembra essere causato dalla richiesta inviata (qui sto mostrando l’ispettore di rete su Firefox):
Sembra non aggiornare i valori dei parametri mentre vengono inseriti (username=null, min_days=10 sono i parametri predefiniti quando si carica la pagina). La console restituisce anche un errore “Uncaught TypeError: t is undefined” quando si inserisce testo nella casella username o si modifica il valore di min_days. Questa riga sta causando l’errore:
Questo è il massimo che posso fare per tracciare il problema senza dover fare un fork del repository e fare il debug di ogni riga. Volevo solo segnalare il problema e sono anche curioso di sapere se altri hanno lo stesso problema.
Grazie @piffy per la segnalazione. Abbiamo recentemente apportato alcune modifiche al plugin data-explorer, quindi potrebbe essere valido. Ho testato più query con un input di nomi utente e non ho riscontrato il problema collegato nell’OP. Potresti inserire qui la tua query in modo che possa testarla?
--[params]
-- string :username
-- int :min_days = 10
WITH consecutive_visits AS (
SELECT user_id,
visited_at,
-- Il valore di s sarà lo stesso per ogni gruppo di giorni consecutivi
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
Ho provato con la modalità sicura attiva (solo plugin ufficiali) e ho lo stesso problema.
Come suggerimento extra divertente mentre Isaac esamina la questione, puoi anche utilizzare il parametro user_id per ottenere una casella di completamento automatico dei parametri. Ad esempio:
-- [params]
-- user_id :user
-- int :min_days = 10
WITH consecutive_visits AS (
SELECT user_id,
visited_at,
-- Il valore di s sarà lo stesso per ogni gruppo di giorni consecutivi
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