Como obter o número de menções dos grupos no último ano e o número de membros

Olá, sou moderadora no fórum Hopscotch e gostaria de saber se poderíamos contar com ajuda para essas consultas do Data Explorer:

  • Quantas menções @ os grupos tiveram nos últimos 365 dias
    • ordenadas da menor para a maior,
    • e apenas se o grupo existir há mais de 365 dias (ou seja, a data de criação do grupo foi há mais de 365 dias)
  • Quantas menções @ os grupos tiveram nos últimos 365 dias
    • apenas se o grupo tiver menos de 5 menções nos últimos 365 dias
    • ordenadas da menor para a maior,
    • e apenas se o grupo existir há mais de 365 dias (ou seja, a data de criação do grupo foi há mais de 365 dias)
  • Quantos membros os grupos têm,
    • apenas se o grupo tiver menos de 10 membros
    • ordenadas da menor para a maior

O objetivo é trabalharmos na remoção de grupos inativos. (Eu passaria as consultas para um administrador criar)

Obrigada antecipadamente,
Tracey

(Eu adicionaria a tag data-explorer, mas parece que não consigo fazer isso no momento)

1 curtida

Olá,

Só para esclarecer: você precisa de três consultas?

  1. Para todos os grupos com mais de 365 dias de existência, liste quantas menções tiveram, em ordem crescente.
  2. Para todos os grupos com mais de 365 dias de existência, liste quantas menções tiveram, em ordem crescente, apenas se tiverem menos de cinco menções.
  3. Para todos os grupos com menos de 10 membros, liste quantos membros eles têm.

Se for isso, posso fazer para você — todas as informações necessárias estão armazenadas nas tabelas groups, group_users e group_mentions.

Pelo que pude verificar, o Discourse não mantém um registro explícito de menções, mas ele rastreia os links adicionados aos tópicos. Uma menção a um grupo em uma postagem será registrada como o valor do campo url na tabela topic_links, no seguinte formato: "/groups/<nome_do_grupo>". A consulta a seguir deve fornecer algo próximo ao que você procura. Você precisará fornecer valores para os parâmetros start_date e end_date. Essas datas devem estar no formato aaaa-mm-dd. Por exemplo, para obter dados do último ano, insira 2020-01-01 como start_date e 2020-12-31 como end_date:

--[params]
-- date :start_date
-- date :end_date

WITH group_mentions AS (
SELECT
split_part(url, '/', 3) AS group_name
FROM topic_links tl
JOIN topics t ON t.id = tl.topic_id
WHERE internal = true
AND url LIKE '/groups/%'
AND t.deleted_at IS NULL
AND t.archetype = 'regular'
AND tl.created_at::date BETWEEN :start_date AND :end_date
)

SELECT
gm.group_name,
COUNT(gm.group_name) AS mention_count
FROM group_mentions gm
JOIN groups g ON g.name = gm.group_name
WHERE g.created_at::date <= :start_date
GROUP BY gm.group_name
ORDER BY mention_count DESC

A consulta está retornando apenas menções adicionadas a postagens regulares (inclui, no entanto, menções adicionadas a postagens sussurradas). Se você deseja que menções adicionadas a mensagens privadas também apareçam nos resultados, remova a linha AND t.archetype = 'regular' da primeira consulta.

Avise-me se isso não estiver retornando o tipo de dado que você procura. Terei prazer em responder às suas outras perguntas amanhã, caso ninguém o faça antes disso.

3 curtidas