Tipps für den Export von Benutzerdaten

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:

  1. 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
  1. 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:
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. 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
  1. 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.
  2. 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.
  3. 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.

7 „Gefällt mir“