データエクスプローラーグループレポート - パラメータバグ

Data Explorer を最新バージョンにアップデートしたばかりですが、この問題はまだ発生しています。\n\nData Explorer プラグインには、クエリをグループに公開する機能があります。私は、ユーザーが訪問日数のバッジにどれだけ近いかを知りたがっているため、連続訪問日数をカウントするクエリを公開しました。\n\n

\n\nこれは最近まで機能していましたが、現在はエラーが発生します。\n\n\nエラーは、送信されるリクエストによって引き起こされているようです(ここでは Firefox のネットワークインスペクターを示しています)。\nimage\n\nパラメータの値が入力される際に更新されていないようです(username=nullmin_days=10 はページを読み込んだときのデフォルトパラメータです)。また、コンソールには username ボックスにテキストを入力するか min_days の値を変更すると、「Uncaught TypeError: t is undefined」というエラーが表示されます。この行でエラーが発生しています。\n\ndiscourse-data-explorer/assets/javascripts/discourse/components/param-input.js at 8028b9f16a33553bd3a6e1955ced98f15843cb77 · discourse/discourse-data-explorer · GitHub

「いいね!」 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