تقرير مجموعة مستكشف البيانات - خطأ في المعلمة

لقد قمت للتو بالتحديث إلى أحدث إصدار من مستكشف البيانات قبل نشر هذا، وأؤكد أن هذه المشكلة لا تزال موجودة لدي.

في المكون الإضافي لمستكشف البيانات، توجد ميزة تتيح لك عرض الاستعلامات للمجموعات. لقد قمت بذلك للاستعلام الذي يحسب الأيام المتتالية التي تمت زيارتها لأن لدي مستخدمين متعطشين لمعرفة مدى قربهم من شارات “الأيام التي تمت زيارتها xxx”.

كان هذا يعمل حتى وقت قريب. الآن أحصل على هذا الخطأ.

يبدو أن الخطأ ناتج عن الطلب المرسل (هنا أعرض مفتش الشبكة على فايرفوكس):
image

يبدو أنه لا يقوم بتحديث قيم المعلمات أثناء إدخالها (username=null، min_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,
       -- The value of s will be the same for each group of consecutive days
       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 إعجابات