ユーザーが設定ページから利用できる基本的なユーザーデータエクスポートを超えた、カスタマイズされた詳細なデータエクスポートを必要とする場合、管理者はData Explorerプラグインを使用してユーザーデータのエクスポートを実行できます。
このプロセスには、サイトのポリシーとデータ保護規制への準拠を確保しながら、特定のデータニーズに合わせてSQLクエリを作成および実行することが含まれます。
管理者は、次のような他の理由でユーザーデータをエクスポートしたい場合もあります。
- ユーザーエンゲージメント分析:
- ユーザーがサイトとどのようにやり取りしているか、どの投稿が人気か、どのトピックが最も多くの応答を集めているかを分析します。
- レポート生成:
- コミュニティの指標とユーザーエンゲージメントに関する洞察を提供するために、関係者向けのカスタムレポートを作成します。
- データバックアップ:
- 回復目的または履歴分析のために、ユーザーデータのバックアップを保持します。
- データ移行:
- 別のプラットフォームに移行したり、データウェアハウスを作成したりする際に、ユーザーデータをエクスポートします。
- コンテンツモデレーション:
- ポリシー違反や紛争の場合に、ユーザーアクティビティまたはコンテンツを調査します。
ユーザーデータエクスポートクエリの主な考慮事項
ユーザーデータをエクスポートするためのクエリを作成する際は、エクスポートの特定の要件と、ユーザーデータのエクスポートに関するサイトのポリシーの両方を考慮することが重要です。
ユーザーデータエクスポートクエリの作成方法に影響を与える可能性のある要因と考慮事項を次に示します。
- ユーザー属性:
- ユーザー名、メールアドレス、登録日などの特定のユーザー属性が必要な場合は、クエリでこれらの列をデータベースから明示的に選択する必要があります。たとえば、次のようになります。
SELECT username, email, created_at AS registration_date
FROM users
WHERE id = :user_id
- アクティビティデータ:
- 投稿、いいね、ログイン履歴などのユーザーアクティビティデータをエクスポートするには、関連テーブル(例:
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
- 日付範囲:
- 特定の期間のデータが必要な場合は、クエリに日付フィルターを含めて、結果を関連期間に制限します。
SELECT username, email, created_at AS registration_date
FROM users
WHERE created_at BETWEEN :start_date AND :end_date
- データプライバシー:
- エクスポートされたデータがデータプライバシー法およびサイトポリシーに準拠していることを確認してください。絶対に必要でない限り、機密データを含めることには注意してください。
- 匿名化:
- 場合によっては、ユーザーのプライバシーを保護するためにユーザーデータを匿名化する必要がある場合があります。たとえば、名前を固有の識別子に置き換えることができます。
- ユーザー同意:
- データエクスポートに個人情報または機密ユーザー情報の共有が含まれる場合は、明示的な同意メカニズムが配置されていることを確認してください。
クエリの例
以下に、一般的なデータエクスポートのニーズに対応するクエリの例を示します。これらのクエリは、ユーザーの設定ページから利用できるデータエクスポートと同様になるように設計されています。
ユーザー情報の書き出し:
-- [params]
-- int :user_id
SELECT id, username, email, created_at AS registration_date
FROM users
WHERE id = :user_id
投稿の書き出し
-- [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
認証トークンログの書き出し:
-- [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
認証トークンの書き出し:
-- [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
ユーザーバッジの書き出し:
-- [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
ユーザーブックマークの書き出し:
-- [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
カテゴリ設定の書き出し:
-- [params]
-- int :user_id
SELECT
category_id,
notification_level,
last_seen_at
FROM
category_users
WHERE
user_id = :user_id
フラグの書き出し:
-- [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
)
いいねの書き出し:
-- [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
ユーザー設定の書き出し:
-- [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
キューに入れられた投稿の書き出し:
-- [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
ユーザーアーカイブの書き出し:
-- [params]
-- int :user_id
SELECT
id,
topic_id,
created_at,
updated_at
FROM
user_archived_messages
WHERE
user_id = :user_id
ユーザー訪問の書き出し:
-- [params]
-- int :user_id
SELECT
visited_at,
posts_read,
mobile,
time_read
FROM
user_visits
WHERE
user_id = :user_id
データエクスポートクエリの作成と実行の詳細については、Discourse Data Explorerプラグインのドキュメントおよび#data-reporting::categoryカテゴリを参照してください。