Consejos para exportar datos de usuario

Cuando los usuarios necesitan exportaciones de datos personalizadas o detalladas que van más allá de la exportación básica de datos de usuario disponible en su página de preferencias, los administradores pueden realizar exportaciones de datos de usuario utilizando el plugin Data Explorer.

Este proceso implica escribir y ejecutar consultas SQL adaptadas a necesidades de datos específicas, garantizando al mismo tiempo el cumplimiento de las políticas del sitio y las regulaciones de protección de datos.

Los administradores también pueden querer exportar datos de usuario por otras razones, como:

  • Análisis de la participación del usuario:
    • Analizar cómo interactúan los usuarios con el sitio, qué publicaciones son populares y qué temas generan más respuestas.
  • Generación de informes:
    • Crear informes personalizados para las partes interesadas para proporcionar información sobre las métricas de la comunidad y la participación del usuario.
  • Copia de seguridad de datos:
    • Mantener copias de seguridad de los datos del usuario para fines de recuperación o análisis histórico.
  • Migración de datos:
    • Exportar datos de usuario al migrar a otra plataforma o crear un almacén de datos.
  • Moderación de contenido:
    • Investigar las actividades o el contenido del usuario en caso de infracciones de políticas o disputas.

Consideraciones clave para las consultas de exportación de datos de usuario

Al escribir consultas para exportar datos de usuario, es importante considerar tanto los requisitos específicos de la exportación como las políticas de su sitio con respecto a las exportaciones de datos de usuario.

Aquí hay algunos factores y consideraciones que pueden influir en cómo se escriben las consultas de exportación de datos de usuario:

  1. Atributos del usuario:
    • Si necesita atributos específicos del usuario, como nombre de usuario, correo electrónico o fecha de registro, su consulta debe seleccionar explícitamente estas columnas de la base de datos. Por ejemplo:
SELECT username, email, created_at AS registration_date
FROM users
WHERE id = :user_id
  1. Datos de actividad:
    • Para exportar datos de actividad del usuario, como publicaciones, me gusta o historial de inicio de sesión, serán necesarias uniones adicionales con tablas relacionadas (por ejemplo, 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
  1. Rango de fechas:
    • Si necesita datos de un período de tiempo específico, incluya filtros de fecha en su consulta para limitar los resultados al período relevante:
SELECT username, email, created_at AS registration_date
FROM users
WHERE created_at BETWEEN :start_date AND :end_date
  1. Privacidad de datos:
    • Asegúrese de que los datos exportados cumplan con las leyes de privacidad de datos y las políticas del sitio. Tenga cuidado al incluir datos confidenciales a menos que sea absolutamente necesario.
  2. Anonimización:
    • En algunos casos, es posible que deba anonimizar los datos del usuario para proteger la privacidad del usuario. Por ejemplo, podría reemplazar los nombres con identificadores únicos.
  3. Consentimiento del usuario:
    • Asegúrese de que exista un mecanismo de consentimiento explícito si la exportación de datos implica compartir información personal o confidencial del usuario.

Consultas de ejemplo

A continuación, se muestran algunas consultas de ejemplo para necesidades comunes de exportación de datos. Estas consultas están diseñadas para ser similares a la exportación de datos disponible desde la página de preferencias de un usuario:

Exportar información del usuario:

-- [params]
-- int :user_id

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

Exportar publicaciones

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

Exportar registros de tokens de autenticación:

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

Exportar tokens de autenticación:

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

Exportar insignias de usuario:

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

Exportar marcadores de usuario:

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

Exportar preferencias de categoría:

-- [params]
-- int :user_id

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

Exportar indicadores:

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

Exportar me gusta:

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

Exportar preferencias del usuario:

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

Exportar publicaciones en cola:

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

Exportar archivo de usuario:

-- [params]
-- int :user_id

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

Exportar visitas de usuario:

-- [params]
-- int :user_id

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

Para obtener más información sobre cómo crear y ejecutar consultas de exportación de datos, consulte la documentación del plugin Discourse Data Explorer y la categoría Data & reporting.

7 Me gusta