سحب قائمة RSVP لحدث Pull عبر Data Explorer

نحن نحاول زيادة حضور فعالياتنا من خلال البحث عن المستخدمين الذين تفاعلوا مع محتوى مشابه موجود. بمساعدة روبوت الذكاء الاصطناعي، تمكنا من صياغة الاستعلام التالي.

-- [params]
-- text :keyword
-- int :min_engagements
-- null string :tag_name

WITH keyword_posts AS (
    SELECT
        p.id AS post_id
    FROM
        posts p
    JOIN
        topics t ON t.id = p.topic_id
    LEFT JOIN
        topic_tags tt ON tt.topic_id = t.id
    LEFT JOIN
        tags tg ON tg.id = tt.tag_id
    WHERE
        p.raw ILIKE '%' || :keyword || '%'
        AND (:tag_name is null OR tg.name = :tag_name)
),
user_engagement AS (
    SELECT
        ua.user_id,
        COUNT(DISTINCT ua.target_post_id) AS engaged_posts_count
    FROM
        user_actions ua
    JOIN
        keyword_posts kp ON kp.post_id = ua.target_post_id
    WHERE
        ua.action_type IN (1, 4, 5, 6)
    AND ua.user_id NOT IN (
        SELECT gu.user_id
        FROM group_users gu
        JOIN groups g ON g.id = gu.group_id
        WHERE g.name = 'developer_relations'
    )
    GROUP BY
        ua.user_id
)
SELECT
    ue.user_id,
    ue.engaged_posts_count
FROM
    user_engagement ue
WHERE
    ue.engaged_posts_count >= :min_engagements
ORDER BY
    ue.engaged_posts_count DESC

نحن نمنح المستخدمين وقتًا لاكتشاف فعالياتنا والرد عليها بشكل طبيعي، ولكن مع اقتراب الفعالية، نريد إرسال دعوات أكثر استهدافًا. للقيام بذلك، نحتاج إلى الرجوع إلى قائمة الردود الحالية واستبعادهم من قائمة المستخدمين المستهدفين. هل هناك طريقة للوصول إلى قائمة الردود هذه عبر #data-explorer؟
الطريقة الوحيدة التي وجدتها للوصول إلى هذا يدويًا هي باستخدام خيار التصدير في كائن الحدث:

المشكلة هي أن هذا ينشئ ملفًا مضغوطًا يتم إرساله إليّ عبر رسالة خاصة، والتي أفترض أنها غير مرئية لمستكشف البيانات.

أعتقد أنك سترغب في استخدام جدولي discourse_post_event_events و discourse_post_event_invitees لهذا الغرض.

تمكنت من العمل على ما يلي باستخدام الروبوت، ولكنه يُرجع 0 نتائج (على الرغم من أنني أرى أن أكثر من 30 شخصًا قد استجابوا. الاستعلام يعمل إذا قمت بإزالة عبارة WHERE.

-- [params]
-- text :event_url = 'https://developer.sailpoint.com/discuss/t/deploying-the-beyondtrust-password-safe-connector-for-identityiq-with-michel-bluteau/68228'

SELECT
    users.username AS "Username",
    invitees.status AS "RSVP Status",
    invitees.updated_at AS "Last Updated"
FROM
    discourse_post_event_events AS events
JOIN
    discourse_post_event_invitees AS invitees
ON
    events.id = invitees.post_id
JOIN
    users
ON
    invitees.user_id = users.id
WHERE
    events.url = :event_url

ما رأيك في شيء كهذا:

-- [params]
-- text :keyword
-- int :min_engagements
-- null string :tag_name
-- post_id :event_post

WITH keyword_posts AS (

    SELECT
        p.id AS post_id
    FROM posts p
      JOIN topics t ON t.id = p.topic_id
      LEFT JOIN topic_tags tt ON tt.topic_id = t.id
      LEFT JOIN tags tg ON tg.id = tt.tag_id
    WHERE p.raw ILIKE '%' || :keyword || '%'
      AND (:tag_name is null OR tg.name = :tag_name)
),

user_engagement AS (

    SELECT
        ua.user_id,
        COUNT(DISTINCT ua.target_post_id) AS engaged_posts_count
    FROM user_actions ua
    JOIN keyword_posts kp ON kp.post_id = ua.target_post_id
    WHERE ua.action_type IN (1, 4, 5, 6)
    AND ua.user_id NOT IN (SELECT user_id FROM group_users WHERE group_id = 41)
    GROUP BY ua.user_id
)

SELECT
    ue.user_id,
    ue.engaged_posts_count
FROM user_engagement ue
WHERE ue.engaged_posts_count >= :min_engagements
  AND ue.user_id NOT IN (SELECT user_id FROM discourse_post_event_invitees WHERE post_id = :event_post AND status = 0)
ORDER BY ue.engaged_posts_count DESC

بالنسبة للمعامل event_url، فإنه يقبل عنوان الموضوع ولكن مع رقم المنشور في النهاية، مثل https://developer.sailpoint.com/discuss/t/deploying-the-beyondtrust-password-safe-connector-for-identityiq-with-michel-bluteau/68228/1 (بدلاً من نسخة الموضوع التي لا تحتوي على /1 في النهاية).

إعجاب واحد (1)