نصائح لتصدير بيانات المستخدم

عندما يحتاج المستخدمون إلى تصدير بيانات مخصصة أو مفصلة تتجاوز التصدير الأساسي لبيانات المستخدم المتاح من صفحة تفضيلاتهم، يمكن للمسؤولين إجراء عمليات تصدير بيانات المستخدم باستخدام المكون الإضافي Data Explorer.

تتضمن هذه العملية كتابة وتنفيذ استعلامات SQL مصممة خصيصًا لتلبية احتياجات البيانات المحددة مع ضمان الامتثال لسياسات الموقع ولوائح حماية البيانات.

قد يرغب المسؤولون أيضًا في تصدير بيانات المستخدم لأسباب أخرى، مثل:

  • تحليل تفاعل المستخدم:
    • تحليل كيفية تفاعل المستخدمين مع الموقع، وما هي المنشورات الشائعة، وما هي المواضيع التي تحظى بأكبر عدد من الردود.
  • إنشاء التقارير:
    • إنشاء تقارير مخصصة لأصحاب المصلحة لتقديم رؤى حول مقاييس المجتمع وتفاعل المستخدم.
  • النسخ الاحتياطي للبيانات:
    • الاحتفاظ بنسخ احتياطية لبيانات المستخدم لأغراض الاسترداد أو التحليل التاريخي.
  • ترحيل البيانات:
    • تصدير بيانات المستخدم عند الترحيل إلى منصة أخرى أو إنشاء مستودع بيانات.
  • الإشراف على المحتوى:
    • التحقيق في أنشطة المستخدم أو المحتوى في حالة انتهاك السياسات أو النزاعات.

اعتبارات رئيسية لاستعلامات تصدير بيانات المستخدم

عند كتابة استعلامات لتصدير بيانات المستخدم، من المهم مراعاة كل من المتطلبات المحددة للتصدير، وسياسات موقعك المتعلقة بتصدير بيانات المستخدم.

فيما يلي بعض العوامل والاعتبارات التي قد تؤثر على كيفية كتابة استعلامات تصدير بيانات المستخدم:

  1. سمات المستخدم:

    • إذا كنت بحاجة إلى سمات مستخدم محددة مثل اسم المستخدم أو البريد الإلكتروني أو تاريخ التسجيل، فيجب أن يحدد استعلامك هذه الأعمدة بشكل صريح من قاعدة البيانات. على سبيل المثال:
    SELECT username, email, created_at AS registration_date
    FROM users
    WHERE id = :user_id
    
  2. بيانات النشاط:

    • لتصدير بيانات نشاط المستخدم مثل المنشورات أو الإعجابات أو سجلات تسجيل الدخول، ستكون هناك حاجة إلى عمليات ربط إضافية مع الجداول ذات الصلة (مثل posts و likes و user_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
    
  3. نطاق التاريخ:

    • إذا كنت بحاجة إلى بيانات من فترة زمنية محددة، فقم بتضمين عوامل تصفية التاريخ في استعلامك لتقييد النتائج بالفترة ذات الصلة:
    SELECT username, email, created_at AS registration_date
    FROM users
    WHERE created_at BETWEEN :start_date AND :end_date
    
  4. خصوصية البيانات:

    • تأكد من أن البيانات المصدرة تتوافق مع قوانين خصوصية البيانات وسياسات الموقع. كن حذرًا بشأن تضمين البيانات الحساسة ما لم يكن ذلك ضروريًا للغاية.
  5. إخفاء الهوية:

    • في بعض الحالات، قد تحتاج إلى إخفاء هوية بيانات المستخدم لحماية خصوصية المستخدم. على سبيل المثال، قد تستبدل الأسماء بمعرفات فريدة.
  6. موافقة المستخدم:

    • تأكد من وجود آلية موافقة صريحة إذا كان تصدير البيانات يتضمن مشاركة معلومات المستخدم الشخصية أو الحساسة.

استعلامات مثال

فيما يلي بعض الاستعلامات النموذجية لاحتياجات تصدير البيانات الشائعة. تم تصميم هذه الاستعلامات لتكون مشابهة لتصدير البيانات المتاح من صفحة تفضيلات المستخدم:

تصدير معلومات المستخدم:

-- [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 plugin، والفئة Data & reporting.

7 إعجابات