Conseils pour exporter les données utilisateur

Lorsque les utilisateurs ont besoin d’exportations de données personnalisées ou détaillées qui vont au-delà des informations de base disponibles sur leur page de préférences Exportation des données utilisateur, les administrateurs peuvent effectuer des exportations de données utilisateur à l’aide du plugin Explorateur de données.

Ce processus implique la rédaction et l’exécution de requêtes SQL adaptées à des besoins de données spécifiques, tout en garantissant la conformité avec les politiques du site et les réglementations en matière de protection des données.

Les administrateurs peuvent également souhaiter exporter des données utilisateur pour d’autres raisons, telles que :

  • Analyse de l’engagement des utilisateurs :
    • Analyser comment les utilisateurs interagissent avec le site, quels messages sont populaires et quels sujets suscitent le plus de réponses.
  • Génération de rapports :
    • Créer des rapports personnalisés pour les parties prenantes afin de fournir des informations sur les métriques de la communauté et l’engagement des utilisateurs.
  • Sauvegarde des données :
    • Conserver des sauvegardes des données utilisateur à des fins de récupération ou d’analyse historique.
  • Migration des données :
    • Exporter les données utilisateur lors de la migration vers une autre plateforme ou de la création d’un entrepôt de données.
  • Modération du contenu :
    • Enquêter sur les activités ou le contenu des utilisateurs en cas de violation des politiques ou de litiges.

Considérations clés pour les requêtes d’exportation de données utilisateur

Lors de la rédaction de requêtes pour exporter des données utilisateur, il est important de prendre en compte à la fois les exigences spécifiques de l’exportation et les politiques de votre site concernant les exportations de données utilisateur.

Voici quelques facteurs et considérations qui peuvent influencer la manière dont les requêtes d’exportation de données utilisateur sont écrites :

  1. Attributs utilisateur :
    • Si vous avez besoin d’attributs utilisateur spécifiques tels que le nom d’utilisateur, l’e-mail ou la date d’inscription, votre requête doit sélectionner explicitement ces colonnes dans la base de données. Par exemple :
SELECT username, email, created_at AS registration_date
FROM users
WHERE id = :user_id
  1. Données d’activité :
    • Pour exporter les données d’activité utilisateur telles que les messages, les likes ou l’historique de connexion, des jointures supplémentaires avec des tables associées (par exemple, posts, likes, user_actions) seront nécessaires :
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. Période :
    • Si vous avez besoin de données d’une période spécifique, incluez des filtres de date dans votre requête pour limiter les résultats à la période pertinente :
SELECT username, email, created_at AS registration_date
FROM users
WHERE created_at BETWEEN :start_date AND :end_date
  1. Confidentialité des données :
    • Assurez-vous que les données exportées sont conformes aux lois sur la confidentialité des données et aux politiques du site. Soyez prudent quant à l’inclusion de données sensibles, sauf si cela est absolument nécessaire.
  2. Anonymisation :
    • Dans certains cas, vous devrez peut-être anonymiser les données utilisateur pour protéger la vie privée des utilisateurs. Par exemple, vous pourriez remplacer les noms par des identifiants uniques.
  3. Consentement de l’utilisateur :
    • Assurez-vous qu’un mécanisme de consentement explicite est en place si l’exportation de données implique le partage d’informations personnelles ou sensibles sur les utilisateurs.

Exemples de requêtes

Vous trouverez ci-dessous quelques exemples de requêtes pour des besoins courants d’exportation de données. Ces requêtes sont conçues pour être similaires à l’exportation de données disponible à partir de la page des préférences d’un utilisateur :

Exporter les informations utilisateur :

-- [params]
-- int :user_id

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

Exporter les messages

-- [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

Exporter les journaux de jetons d’authentification :

-- [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

Exporter les jetons d’authentification :

-- [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

Exporter les badges utilisateur :

-- [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

Exporter les signets utilisateur :

-- [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

Exporter les préférences de catégorie :

-- [params]
-- int :user_id

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

Exporter les indicateurs :

-- [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
    )

Exporter les likes :

-- [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

Exporter les préférences utilisateur :

-- [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

Exporter les messages mis en file d’attente :

-- [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

Exporter l’archive utilisateur :

-- [params]
-- int :user_id

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

Exporter les visites utilisateur :

-- [params]
-- int :user_id

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

Pour plus d’informations sur la création et l’exécution de requêtes d’exportation de données, veuillez consulter la documentation du plugin Discourse Data Explorer et la catégorie Data & reporting.

7 « J'aime »