Obtendo (Dias Visitados) no Relatório de Lista de Usuários CSV

Olá,

Existe a coluna (Dias Visitados) que vemos no link:

https://LINK/admin/users/2/USERNAME

Seria ótimo se pudéssemos incluir essa coluna no arquivo CSV da lista de usuários gerado a partir de:
Painel Administrativo => Aba Usuários => Botão “Exportar”

3 curtidas

Não é exatamente o que você esperava ouvir, mas…

O arquivo de exportação de usuários contém campos da tabela User.
O campo days_visited vem da tabela User_Stats.

Seria uma “antinormalização” ter os mesmos dados idênticos mais de uma vez (por exemplo, se o campo estivesse em ambas as tabelas). Se não me engano, o que você vê são os resultados de uma consulta JOIN que utiliza a tabela User, mas também outras tabelas relacionadas ao usuário.

Dito isso, com o plugin Data Explorer, você não terá problemas para executar uma consulta JOIN desse tipo que gere um arquivo de exportação com esse campo incluído.

3 curtidas

Não é bem preciso: o arquivo CSV inclui as colunas likes_given e likes_received, que também estão na mesma tabela 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
);

Do schema.sql

3 curtidas

Obrigado, você está certo. Parece que há mais do que eu lembro de ter trabalhado antes.

3 curtidas

Obrigado por apontar o arquivo relacionado :smile:

Como topics_entered existe na função get_base_user_array, assim como outras colunas… isso parece ser um bug?

1 curtida

Há campos em que me interessei que não estavam presentes na exportação (por volta de 1 a 2 anos atrás). Assumi que era intencional e não um erro, mas nunca verifiquei mais a fundo. A disponibilidade das exportações passou a ser restrita apenas aos administradores, e, sem dados reais para trabalhar, a dificuldade aumentou, o interesse diminuiu e algumas responsabilidades da vida real encerraram esse caminho.

Sem olhar com mais atenção, uma suposição ousada é que, se não houver alterações no núcleo, um plugin poderia facilmente obter valores das tabelas e adicioná-los à exportação em CSV. Mas acho que o plugin Data Explorer é um bom candidato para uma exportação personalizada.

Na maior parte, meu interesse atual mudou de manipular arquivos do núcleo restritos aos administradores para criar usuárioscripts personalizados.

Talvez, com um consenso suficiente, a exportação atual possa ser alterada?

3 curtidas

Escrevi a consulta necessária para isso:

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

Embora esses dados sejam realmente úteis no relatório de lista de usuários para obter algumas informações.

Obrigado @Mittineague :rose:

5 curtidas