عندما يحتاج المستخدمون إلى تصدير بيانات مخصصة أو مفصلة تتجاوز التصدير الأساسي لبيانات المستخدم المتاح من صفحة تفضيلاتهم، يمكن للمسؤولين إجراء عمليات تصدير بيانات المستخدم باستخدام المكون الإضافي Data Explorer.
تتضمن هذه العملية كتابة وتنفيذ استعلامات SQL مصممة خصيصًا لتلبية احتياجات البيانات المحددة مع ضمان الامتثال لسياسات الموقع ولوائح حماية البيانات.
قد يرغب المسؤولون أيضًا في تصدير بيانات المستخدم لأسباب أخرى، مثل:
- تحليل تفاعل المستخدم:
- تحليل كيفية تفاعل المستخدمين مع الموقع، وما هي المنشورات الشائعة، وما هي المواضيع التي تحظى بأكبر عدد من الردود.
- إنشاء التقارير:
- إنشاء تقارير مخصصة لأصحاب المصلحة لتقديم رؤى حول مقاييس المجتمع وتفاعل المستخدم.
- النسخ الاحتياطي للبيانات:
- الاحتفاظ بنسخ احتياطية لبيانات المستخدم لأغراض الاسترداد أو التحليل التاريخي.
- ترحيل البيانات:
- تصدير بيانات المستخدم عند الترحيل إلى منصة أخرى أو إنشاء مستودع بيانات.
- الإشراف على المحتوى:
- التحقيق في أنشطة المستخدم أو المحتوى في حالة انتهاك السياسات أو النزاعات.
اعتبارات رئيسية لاستعلامات تصدير بيانات المستخدم
عند كتابة استعلامات لتصدير بيانات المستخدم، من المهم مراعاة كل من المتطلبات المحددة للتصدير، وسياسات موقعك المتعلقة بتصدير بيانات المستخدم.
فيما يلي بعض العوامل والاعتبارات التي قد تؤثر على كيفية كتابة استعلامات تصدير بيانات المستخدم:
-
سمات المستخدم:
- إذا كنت بحاجة إلى سمات مستخدم محددة مثل اسم المستخدم أو البريد الإلكتروني أو تاريخ التسجيل، فيجب أن يحدد استعلامك هذه الأعمدة بشكل صريح من قاعدة البيانات. على سبيل المثال:
SELECT username, email, created_at AS registration_date FROM users WHERE id = :user_id -
بيانات النشاط:
- لتصدير بيانات نشاط المستخدم مثل المنشورات أو الإعجابات أو سجلات تسجيل الدخول، ستكون هناك حاجة إلى عمليات ربط إضافية مع الجداول ذات الصلة (مثل
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 - لتصدير بيانات نشاط المستخدم مثل المنشورات أو الإعجابات أو سجلات تسجيل الدخول، ستكون هناك حاجة إلى عمليات ربط إضافية مع الجداول ذات الصلة (مثل
-
نطاق التاريخ:
- إذا كنت بحاجة إلى بيانات من فترة زمنية محددة، فقم بتضمين عوامل تصفية التاريخ في استعلامك لتقييد النتائج بالفترة ذات الصلة:
SELECT username, email, created_at AS registration_date FROM users WHERE created_at BETWEEN :start_date AND :end_date -
خصوصية البيانات:
- تأكد من أن البيانات المصدرة تتوافق مع قوانين خصوصية البيانات وسياسات الموقع. كن حذرًا بشأن تضمين البيانات الحساسة ما لم يكن ذلك ضروريًا للغاية.
-
إخفاء الهوية:
- في بعض الحالات، قد تحتاج إلى إخفاء هوية بيانات المستخدم لحماية خصوصية المستخدم. على سبيل المثال، قد تستبدل الأسماء بمعرفات فريدة.
-
موافقة المستخدم:
- تأكد من وجود آلية موافقة صريحة إذا كان تصدير البيانات يتضمن مشاركة معلومات المستخدم الشخصية أو الحساسة.
استعلامات مثال
فيما يلي بعض الاستعلامات النموذجية لاحتياجات تصدير البيانات الشائعة. تم تصميم هذه الاستعلامات لتكون مشابهة لتصدير البيانات المتاح من صفحة تفضيلات المستخدم:
تصدير معلومات المستخدم:
-- [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.