Quando os usuários precisam de exportações de dados personalizadas ou detalhadas que vão além das exportações básicas de dados do usuário disponíveis na página de preferências, os administradores podem realizar exportações de dados do usuário usando o plugin Data Explorer.
Esse processo envolve a escrita e execução de consultas SQL adaptadas a necessidades específicas de dados, garantindo a conformidade com as políticas do site e os regulamentos de proteção de dados.
Os administradores também podem querer exportar dados do usuário por outros motivos, como:
- Análise de Engajamento do Usuário:
- Analisar como os usuários interagem com o site, quais posts são populares e quais tópicos geram mais respostas.
- Geração de Relatórios:
- Criar relatórios personalizados para partes interessadas, fornecendo insights sobre métricas da comunidade e engajamento do usuário.
- Backup de Dados:
- Manter backups de dados do usuário para fins de recuperação ou análise histórica.
- Migração de Dados:
- Exportar dados do usuário ao migrar para outra plataforma ou criar um data warehouse.
- Moderação de Conteúdo:
- Investigar atividades ou conteúdo do usuário em caso de violações de políticas ou disputas.
Principais Considerações para Consultas de Exportação de Dados do Usuário
Ao escrever consultas para exportar dados do usuário, é importante considerar tanto os requisitos específicos da exportação quanto as políticas do seu site em relação às exportações de dados do usuário.
Aqui estão alguns fatores e considerações que podem influenciar como as consultas de exportação de dados do usuário são escritas:
-
Atributos do Usuário:
- Se você precisar de atributos específicos do usuário, como nome de usuário, e-mail ou data de registro, sua consulta deverá selecionar explicitamente essas colunas do banco de dados. Por exemplo:
SELECT username, email, created_at AS registration_date FROM users WHERE id = :user_id -
Dados de Atividade:
- Para exportar dados de atividade do usuário, como posts, curtidas ou histórico de login, serão necessárias junções adicionais com tabelas relacionadas (por exemplo,
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 - Para exportar dados de atividade do usuário, como posts, curtidas ou histórico de login, serão necessárias junções adicionais com tabelas relacionadas (por exemplo,
-
Intervalo de Datas:
- Se você precisar de dados de um período específico, inclua filtros de data em sua consulta para limitar os resultados ao período relevante:
SELECT username, email, created_at AS registration_date FROM users WHERE created_at BETWEEN :start_date AND :end_date -
Privacidade de Dados:
- Certifique-se de que os dados exportados estejam em conformidade com as leis de privacidade de dados e as políticas do site. Tenha cuidado ao incluir dados confidenciais, a menos que seja absolutamente necessário.
-
Anonimização:
- Em alguns casos, pode ser necessário anonimizar os dados do usuário para proteger a privacidade do usuário. Por exemplo, você pode substituir nomes por identificadores exclusivos.
-
Consentimento do Usuário:
- Certifique-se de que um mecanismo de consentimento explícito esteja em vigor se a exportação de dados envolver o compartilhamento de informações pessoais ou confidenciais do usuário.
Exemplos de Consultas
Abaixo estão alguns exemplos de consultas para necessidades comuns de exportação de dados. Essas consultas são projetadas para serem semelhantes à exportação de dados disponível em uma página de preferências do usuário:
Exportar Informações do Usuário:
-- [params]
-- int :user_id
SELECT id, username, email, created_at AS registration_date
FROM users
WHERE id = :user_id
Exportar Posts
-- [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 Logs de Tokens de Autenticação:
-- [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 Autenticação:
-- [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 Emblemas do Usuário:
-- [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 Favoritos do Usuário:
-- [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 Preferências de Categoria:
-- [params]
-- int :user_id
SELECT
category_id,
notification_level,
last_seen_at
FROM
category_users
WHERE
user_id = :user_id
Exportar Sinalizações:
-- [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 Curtidas:
-- [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 Preferências do Usuário:
-- [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 Posts Enfileirados:
-- [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 Arquivo do Usuário:
-- [params]
-- int :user_id
SELECT
id,
topic_id,
created_at,
updated_at
FROM
user_archived_messages
WHERE
user_id = :user_id
Exportar Visitas do Usuário:
-- [params]
-- int :user_id
SELECT
visited_at,
posts_read,
mobile,
time_read
FROM
user_visits
WHERE
user_id = :user_id
Para mais informações sobre como criar e executar consultas de exportação de dados, consulte a documentação do plugin Discourse Data Explorer e a categoria Data & reporting.