ユーザーデータのエクスポートのヒント

ユーザーが設定ページから利用できる基本的なユーザーデータエクスポートを超えた、カスタマイズされた詳細なデータエクスポートを必要とする場合、管理者はData Explorerプラグインを使用してユーザーデータのエクスポートを実行できます。

このプロセスには、サイトのポリシーとデータ保護規制への準拠を確保しながら、特定のデータニーズに合わせてSQLクエリを作成および実行することが含まれます。

管理者は、次のような他の理由でユーザーデータをエクスポートしたい場合もあります。

  • ユーザーエンゲージメント分析:
    • ユーザーがサイトとどのようにやり取りしているか、どの投稿が人気か、どのトピックが最も多くの応答を集めているかを分析します。
  • レポート生成:
    • コミュニティの指標とユーザーエンゲージメントに関する洞察を提供するために、関係者向けのカスタムレポートを作成します。
  • データバックアップ:
    • 回復目的または履歴分析のために、ユーザーデータのバックアップを保持します。
  • データ移行:
    • 別のプラットフォームに移行したり、データウェアハウスを作成したりする際に、ユーザーデータをエクスポートします。
  • コンテンツモデレーション:
    • ポリシー違反や紛争の場合に、ユーザーアクティビティまたはコンテンツを調査します。

ユーザーデータエクスポートクエリの主な考慮事項

ユーザーデータをエクスポートするためのクエリを作成する際は、エクスポートの特定の要件と、ユーザーデータのエクスポートに関するサイトのポリシーの両方を考慮することが重要です。

ユーザーデータエクスポートクエリの作成方法に影響を与える可能性のある要因と考慮事項を次に示します。

  1. ユーザー属性:
    • ユーザー名、メールアドレス、登録日などの特定のユーザー属性が必要な場合は、クエリでこれらの列をデータベースから明示的に選択する必要があります。たとえば、次のようになります。
SELECT username, email, created_at AS registration_date
FROM users
WHERE id = :user_id
  1. アクティビティデータ:
    • 投稿、いいね、ログイン履歴などのユーザーアクティビティデータをエクスポートするには、関連テーブル(例:postslikesuser_actions)との追加の結合が必要になります。
SELECT p.id AS post_id, p.topic_id, p.created_at AS post_date, u.username
FROM posts p
JOIN users u ON u.id = p.user_id
WHERE u.id = :user_id
  1. 日付範囲:
    • 特定の期間のデータが必要な場合は、クエリに日付フィルターを含めて、結果を関連期間に制限します。
SELECT username, email, created_at AS registration_date
FROM users
WHERE created_at BETWEEN :start_date AND :end_date
  1. データプライバシー:
    • エクスポートされたデータがデータプライバシー法およびサイトポリシーに準拠していることを確認してください。絶対に必要でない限り、機密データを含めることには注意してください。
  2. 匿名化:
    • 場合によっては、ユーザーのプライバシーを保護するためにユーザーデータを匿名化する必要がある場合があります。たとえば、名前を固有の識別子に置き換えることができます。
  3. ユーザー同意:
    • データエクスポートに個人情報または機密ユーザー情報の共有が含まれる場合は、明示的な同意メカニズムが配置されていることを確認してください。

クエリの例

以下に、一般的なデータエクスポートのニーズに対応するクエリの例を示します。これらのクエリは、ユーザーの設定ページから利用できるデータエクスポートと同様になるように設計されています。

ユーザー情報の書き出し:

-- [params]
-- int :user_id

SELECT id, username, email, created_at AS registration_date
FROM users
WHERE id = :user_id

投稿の書き出し

-- [params]
-- int :user_id

SELECT
    id,
    topic_id,
    post_number,
    created_at,
    updated_at,
    reply_to_post_number,
    reply_count,
    quote_count,
    deleted_at,
    like_count,
    incoming_link_count,
    bookmark_count,
    score,
    reads,
    post_type,
    sort_order,
    last_editor_id,
    hidden,
    hidden_reason_id,
    notify_moderators_count,
    spam_count,
    illegal_count,
    inappropriate_count,
    last_version_at,
    user_deleted,
    reply_to_user_id,
    percent_rank,
    notify_user_count,
    like_score,
    deleted_by_id,
    word_count,
    version,
    cook_method,
    wiki,
    baked_at,
    baked_version,
    hidden_at,
    self_edits,
    reply_quoted,
    via_email,
    public_version,
    locked_by_id,
    image_upload_id,
    qa_vote_count,
    raw,
    cooked,
    edit_reason,
    raw_email,
    action_code,
    outbound_message_id
FROM
    posts
WHERE
    user_id = :user_id
ORDER BY
    created_at DESC

認証トークンログの書き出し:

-- [params]
-- int :user_id

SELECT
    path,
    action,
    user_auth_token_id,
    client_ip,
    user_agent,
    auth_token,
    created_at
FROM
    user_auth_token_logs
WHERE
    user_id = :user_id

認証トークンの書き出し:

-- [params]
-- int :user_id

SELECT
    auth_token,
    client_ip,
    rotated_at,
    created_at,
    updated_at,
    seen_at,
    auth_token_seen,
    user_agent,
    prev_auth_token
FROM
    user_auth_tokens
WHERE
    user_id = :user_id

ユーザーバッジの書き出し:

-- [params]
-- int :user_id

SELECT
    notification_id,
    badge_id,
    granted_at,
    granted_by_id,
    post_id,
    seq,
    featured_rank,
    created_at,
    is_favorite
FROM
    user_badges
WHERE
    user_id = :user_id

ユーザーブックマークの書き出し:

-- [params]
-- int :user_id

SELECT
    name,
    reminder_at,
    created_at,
    updated_at,
    reminder_last_sent_at,
    reminder_set_at,
    auto_delete_preference,
    pinned,
    bookmarkable_id,
    bookmarkable_type
FROM
    bookmarks
WHERE
    user_id = :user_id

カテゴリ設定の書き出し:

-- [params]
-- int :user_id

SELECT
    category_id,
    notification_level,
    last_seen_at
FROM
    category_users
WHERE
    user_id = :user_id

フラグの書き出し:

-- [params]
-- int :user_id

SELECT
    id,
    name,
    name_key,
    description,
    notify_type,
    auto_action_type,
    custom_type,
    applies_to,
    position,
    enabled,
    created_at,
    updated_at,
    score_type
FROM
    flags
WHERE
    id IN (
        SELECT
            post_action_type_id
        FROM
            post_actions
        WHERE
            user_id = :user_id
    )

いいねの書き出し:

-- [params]
-- int :user_id

SELECT
    post_id,
    post_action_type_id,
    created_at,
    updated_at,
    deleted_at,
    deleted_by_id,
    related_post_id,
    staff_took_action,
    deferred_by_id,
    targets_topic,
    agreed_at,
    agreed_by_id,
    deferred_at,
    disagreed_at,
    disagreed_by_id
FROM
    post_actions
WHERE
    user_id = :user_id
    AND post_action_type_id = 1

ユーザー設定の書き出し:

-- [params]
-- int :user_id

SELECT
    mailing_list_mode,
    email_digests,
    external_links_in_new_tab,
    enable_quoting,
    dynamic_favicon,
    automatically_unpin_topics,
    digest_after_minutes,
    auto_track_topics_after_msecs,
    new_topic_duration_minutes,
    last_redirected_to_top_at,
    email_previous_replies,
    email_in_reply_to,
    like_notification_frequency,
    include_tl0_in_digests,
    mailing_list_mode_frequency,
    notification_level_when_replying,
    theme_key_seq,
    allow_private messages,
    homepage_id,
    theme_ids,
    hide_profile_and_presence,
    text_size_key,
    text_size_seq,
    email_level,
    email_messages_level,
    title_count_mode_key,
    enable_defer,
    timezone,
    enable_allowed_pm_users,
    dark_scheme_id,
    skip_new_user_tips,
    color_scheme_id,
    default_calendar,
    chat_enabled,
    only_chat_push_notifications,
    oldest_search_log_date,
    chat_sound,
    dismissed_channel_retention_reminder,
    dismissed_dm_retention_reminder,
    bookmark_auto_delete_preference,
    ignore_channel_wide_mention,
    chat_email_frequency,
    enable_experimental_sidebar,
    seen_popups,
    chat_header_indicator_preference,
    sidebar_link_to_filtered_list,
    sidebar_show_count_of_new_items,
    watched_precedence_over_muted,
    chat_separate_sidebar_mode,
    topics_unread_when_closed,
    policy_email_frequency,
    show_thread_title_prompts,
    auto_image_caption
FROM
    user_options
WHERE
    user_id = :user_id

キューに入れられた投稿の書き出し:

-- [params]
-- int :user_id

SELECT
    id,
    user_id,
    topic_id,
    post_number,
    raw,
    created_at,
    updated_at,
    state,
    error,
    queue
FROM
    queued_posts
WHERE
    user_id = :user_id

ユーザーアーカイブの書き出し:

-- [params]
-- int :user_id

SELECT
    id,
    topic_id,
    created_at,
    updated_at
FROM
    user_archived_messages
WHERE
    user_id = :user_id

ユーザー訪問の書き出し:

-- [params]
-- int :user_id

SELECT
    visited_at,
    posts_read,
    mobile,
    time_read
FROM
    user_visits
WHERE
    user_id = :user_id

データエクスポートクエリの作成と実行の詳細については、Discourse Data Explorerプラグインのドキュメントおよび#data-reporting::categoryカテゴリを参照してください。

「いいね!」 7