Wenn Benutzer angepasste oder detaillierte Datenexporte benötigen, die über den einfachen Benutzerdatenexport hinausgehen, der auf ihrer Einstellungsseite verfügbar ist, können Administratoren Benutzerdatenexporte mithilfe des Plugins Data Explorer durchführen.
Dieser Prozess beinhaltet das Schreiben und Ausführen von SQL-Abfragen, die auf spezifische Datenanforderungen zugeschnitten sind und gleichzeitig die Einhaltung von Website-Richtlinien und Datenschutzbestimmungen gewährleisten.
Administratoren möchten Benutzerdaten möglicherweise auch aus anderen Gründen exportieren, z. B.:
- Analyse des Benutzerengagements:
- Analysieren Sie, wie Benutzer mit der Website interagieren, welche Beiträge beliebt sind und welche Themen die meisten Antworten erhalten.
- Berichterstellung:
- Erstellen Sie benutzerdefinierte Berichte für Stakeholder, um Einblicke in Community-Metriken und Benutzerengagement zu geben.
- Datensicherung:
- Bewahren Sie Sicherungskopien von Benutzerdaten zur Wiederherstellung oder für historische Analysen auf.
- Datenmigration:
- Exportieren Sie Benutzerdaten bei der Migration zu einer anderen Plattform oder beim Erstellen eines Data Warehouses.
- Inhaltsmoderation:
- Untersuchen Sie Benutzeraktivitäten oder Inhalte im Falle von Richtlinienverstößen oder Streitigkeiten.
Wichtige Überlegungen für Abfragen zum Export von Benutzerdaten
Beim Schreiben von Abfragen zum Export von Benutzerdaten ist es wichtig, sowohl die spezifischen Anforderungen des Exports als auch die Richtlinien Ihrer Website bezüglich des Exports von Benutzerdaten zu berücksichtigen.
Hier sind einige Faktoren und Überlegungen, die beeinflussen können, wie Abfragen zum Export von Benutzerdaten geschrieben werden:
- Benutzerattribute:
- Wenn Sie bestimmte Benutzerattribute wie Benutzername, E-Mail-Adresse oder Registrierungsdatum benötigen, sollte Ihre Abfrage diese Spalten explizit aus der Datenbank auswählen. Zum Beispiel:
SELECT username, email, created_at AS registration_date
FROM users
WHERE id = :user_id
- Aktivitätsdaten:
- Für den Export von Benutzeraktivitätsdaten wie Beiträgen, Likes oder Anmeldeverlauf sind zusätzliche Joins mit verwandten Tabellen (z. B.
posts,likes,user_actions) erforderlich:
- Für den Export von Benutzeraktivitätsdaten wie Beiträgen, Likes oder Anmeldeverlauf sind zusätzliche Joins mit verwandten Tabellen (z. B.
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
- Datumsbereich:
- Wenn Sie Daten aus einem bestimmten Zeitraum benötigen, fügen Sie Datumsfilter in Ihre Abfrage ein, um die Ergebnisse auf den relevanten Zeitraum zu beschränken:
SELECT username, email, created_at AS registration_date
FROM users
WHERE created_at BETWEEN :start_date AND :end_date
- Datenschutz:
- Stellen Sie sicher, dass die exportierten Daten den Datenschutzgesetzen und Website-Richtlinien entsprechen. Seien Sie vorsichtig bei der Einbeziehung sensibler Daten, es sei denn, dies ist unbedingt erforderlich.
- Anonymisierung:
- In einigen Fällen müssen Sie Benutzerdaten anonymisieren, um die Privatsphäre der Benutzer zu schützen. Sie könnten beispielsweise Namen durch eindeutige Identifikatoren ersetzen.
- Benutzerzustimmung:
- Stellen Sie sicher, dass ein expliziter Zustimmungsmechanismus vorhanden ist, wenn der Datenexport die Weitergabe persönlicher oder sensibler Benutzerinformationen beinhaltet.
Beispielabfragen
Nachfolgend finden Sie einige Beispielabfragen für gängige Datenexportanforderungen. Diese Abfragen sind so konzipiert, dass sie dem Datenexport ähneln, der über die Einstellungsseite eines Benutzers verfügbar ist:
Benutzerinformationen exportieren:
-- [params]
-- int :user_id
SELECT id, username, email, created_at AS registration_date
FROM users
WHERE id = :user_id
Beiträge exportieren
-- [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
Authentifizierungstoken-Protokolle exportieren:
-- [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
Authentifizierungstoken exportieren:
-- [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
Benutzer-Badges exportieren:
-- [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
Benutzer-Lesezeichen exportieren:
-- [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
Kategorieeinstellungen exportieren:
-- [params]
-- int :user_id
SELECT
category_id,
notification_level,
last_seen_at
FROM
category_users
WHERE
user_id = :user_id
Flags exportieren:
-- [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
)
Likes exportieren:
-- [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
Benutzereinstellungen exportieren:
-- [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
Wartende Beiträge exportieren:
-- [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
Benutzerarchiv exportieren:
-- [params]
-- int :user_id
SELECT
id,
topic_id,
created_at,
updated_at
FROM
user_archived_messages
WHERE
user_id = :user_id
Benutzerbesuche exportieren:
-- [params]
-- int :user_id
SELECT
visited_at,
posts_read,
mobile,
time_read
FROM
user_visits
WHERE
user_id = :user_id
Weitere Informationen zum Erstellen und Ausführen von Datenexportabfragen finden Sie in der Dokumentation des Discourse Data Explorer Plugins und in der Kategorie Data & reporting.