Data Explorer を介してプルイベント RSVP リストを取得

イベントへの参加者を増やすために、類似の既存コンテンツにエンゲージしたユーザーを見つけようとしています。AIボットの助けを借りて、以下のクエリを作成することができました。

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

ユーザーがイベントを自発的に発見しRSVPする時間を設けていますが、イベントが近づいてきたら、よりターゲットを絞った招待状を送りたいと考えています。そのためには、既存のRSVPリストを参照し、ターゲットユーザーリストから除外する必要があります。data-explorer を介してこのRSVPリストにアクセスする方法はありますか?

手動でアクセスできる唯一の方法は、EventオブジェクトのExportオプションを使用することだとわかりました。

問題は、これがZIPファイルとして生成され、私にDMで送られてくることです。これは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 パラメータは、トピックの URL を受け入れますが、末尾に投稿番号が付加されます。たとえば、https://developer.sailpoint.com/discuss/t/deploying-the-beyondtrust-password-safe-connector-for-identityiq-with-michel-bluteau/68228/1 のようになります(末尾に /1 がないトピックバージョンではなく)。

「いいね!」 1