こんにちは、
以下のリンクで表示されている「訪問日数」の列があります:
https://LINK/admin/users/2/USERNAME
この列を、以下の場所から生成される CSV 形式のユーザーリストファイルにも含められると嬉しいです:
管理パネル ⇒ ユーザータブ ⇒ 「エクスポート」ボタン
こんにちは、
以下のリンクで表示されている「訪問日数」の列があります:
https://LINK/admin/users/2/USERNAME
この列を、以下の場所から生成される CSV 形式のユーザーリストファイルにも含められると嬉しいです:
管理パネル ⇒ ユーザータブ ⇒ 「エクスポート」ボタン
ご期待に添えないお知らせで申し訳ありませんが……
ユーザーエクスポートファイルには、User テーブルのフィールドが含まれています。
「days_visited」フィールドは User_Stats テーブルに由来するものです。
同じデータを複数回持つこと(例えば、両方のテーブルにそのフィールドが存在する場合)は「非正規化」と呼ばれます。私の記憶が正しければ、表示されているのは、User テーブルだけでなく、ユーザーに関連する他のテーブルも使用する JOIN クエリの結果です。
とはいえ、Data Explorer プラグインを使えば、そのフィールドを含むエクスポートファイルを生成するような JOIN クエリを実行することに問題はありません。
正確ではありません。CSV ファイルには likes_given と likes_received という列が含まれており、これらは同じテーブル user_stats にも存在します。
--
-- Name: user_stats; Type: TABLE; Schema: public; Owner: discourse
--
CREATE TABLE public.user_stats (
user_id integer NOT NULL,
topics_entered integer DEFAULT 0 NOT NULL,
time_read integer DEFAULT 0 NOT NULL,
days_visited integer DEFAULT 0 NOT NULL,
posts_read_count integer DEFAULT 0 NOT NULL,
likes_given integer DEFAULT 0 NOT NULL,
likes_received integer DEFAULT 0 NOT NULL,
topic_reply_count integer DEFAULT 0 NOT NULL,
new_since timestamp without time zone NOT NULL,
read_faq timestamp without time zone,
first_post_created_at timestamp without time zone,
post_count integer DEFAULT 0 NOT NULL,
topic_count integer DEFAULT 0 NOT NULL,
bounce_score double precision DEFAULT 0 NOT NULL,
reset_bounce_score_after timestamp without time zone
);
ありがとうございます、その通りですね。以前扱ったことがあるよりも、もっと多くのものがあるようです。
関連ファイルの指摘ありがとうございます ![]()
topics_entered は他のカラムと同様に get_base_user_array 関数にも存在します。これはバグではないでしょうか?
エクスポートに含まれていなかった(約 1〜2 年前時点)関心のあるフィールドがいくつかありました。それは意図的なものでバグではないと想定していましたが、それ以上確認しませんでした。エクスポートの可用性が管理者専用となり、実データで作業できなくなったことで難易度が上がり、関心も薄れ、さらに現実生活(RL)の忙しさが重なり、その道は断念しました。
確認せずに大胆に推測すれば、コア側で変更されていなければ、プラグインでテーブルから値を取得し、CSV エクスポートに追加することは容易でしょう。しかし、Data Explorer プラグインがカスタムエクスポートの有力な候補だと思います。
私の現在の関心は、主に管理者専用のコアファイルのハッキングから、専用ユーザースクリプトの作成に移っています。
十分な合意が得られれば、現在のエクスポート機能を変更できるかもしれません。
それに必要なクエリを作成しました:
SELECT
u.username_lower AS "username",
stats.days_visited
FROM users u
LEFT JOIN user_stats stats ON stats.user_id = u.id
ORDER BY u.id
ただし、このようなデータはユーザー一覧レポートでいくつかの洞察を得るために実際に役立ちます。
ありがとうございます @Mittineague ![]()