Extraire la liste des RSVP de l'événement Pull via Data Explorer

Nous essayons d’augmenter la participation à nos événements en trouvant les utilisateurs qui se sont intéressés à du contenu existant similaire. Avec l’aide du bot IA, nous avons pu élaborer la requête suivante.

-- [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

Nous laissons aux utilisateurs le temps de découvrir et de s’inscrire à nos événements de manière organique, mais à l’approche de l’événement, nous voulons envoyer des invitations plus ciblées. Pour ce faire, nous devons recouper la liste des inscrits existante et les exclure de la liste des utilisateurs ciblés. Existe-t-il un moyen d’accéder à cette liste d’inscrits via data-explorer ?

La seule façon que j’ai trouvée pour y accéder manuellement est d’utiliser l’option d’exportation sur un objet d’événement :

Le problème est que cela génère un fichier zippé qui m’est envoyé par message privé, et je suppose que Data Explorer ne peut pas y accéder.

Je pense que vous voudrez utiliser les tables discourse_post_event_events et discourse_post_event_invitees pour cela.

J’ai pu avancer sur ce qui suit avec le bot, mais il renvoie 0 résultats (même si je peux voir que plus de 30 personnes ont répondu. La requête fonctionne si je supprime l’instruction 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 "Nom d'utilisateur",
    invitees.status AS "Statut RSVP",
    invitees.updated_at AS "Dernière mise à jour"
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

Et si on faisait quelque chose comme ça :

-- [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

Pour le paramètre event_url, il accepte l’URL du sujet mais avec le numéro du message à la fin, donc https://developer.sailpoint.com/discuss/t/deploying-the-beyondtrust-password-safe-connector-for-identityiq-with-michel-bluteau/68228/1 (plutôt que la version du sujet qui n’a pas le /1 à la fin).

1 « J'aime »