Data explorer 组报告 - 参数错误

我刚刚更新到最新版本的 Data Explorer 才发帖,我可以确认这个问题仍然存在。

Data Explorer 插件中,有一个功能可以让你将查询暴露给组。我已经为计算连续访问天数的查询做了这个,因为用户非常想知道他们离 xxx 天访问徽章还有多远。

这最近才开始失效。现在我收到了这个错误。

错误似乎是由发送的请求引起的(这里我正在显示 Firefox 上的网络检查器):
image

它似乎没有在输入参数值时更新参数值(username=nullmin_days=10 是加载页面时的默认参数)。控制台还显示一个错误“Uncaught TypeError: t is undefined”,当在 username 框中输入文本或更改 min_days 值时。此行正在引发错误:

这是我能追溯问题的最好方法,除非我分叉仓库并逐行调试。只是想报告这个问题,也很好奇其他人是否遇到同样的问题。

4 个赞

感谢 @piffy 的报告。我们最近对 data-explorer 插件进行了一些更改,因此这很可能是有效的。我已经测试了多个带有用户名输入的查询,并且没有遇到 OP 中链接的问题。您能否在此处提供您的查询,以便我进行测试?

谢谢 :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 个赞

作为艾萨克(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

5 个赞

好的,很高兴知道!这比自由格式的文本框更有意义。

3 个赞

抱歉耽搁了,@piffy。现在应该已经修复了 :slight_smile:

4 个赞

太棒了,谢谢!我的用户非常喜欢这个功能。

3 个赞