Pesquisar Logs - Como obter uma lista completa para um determinado intervalo de datas?

Existe uma maneira de obter uma lista completa de pesquisas para um determinado intervalo de datas, em vez de apenas as 100 principais?

Acho que isso pode ser um candidato para uma consulta do explorador de dados. Eu teria que procurar um pouco para construir a consulta exata, mas acho que os dados estão na tabela search_logs.

Me avise se precisar de ajuda extra. :slight_smile:

3 curtidas

Não sei SQL, mas aqui está o que o ChatGPT me disse quando perguntei como consultar logs de pesquisa dos últimos 3 meses. Isso funcionaria (não tenho acesso de administrador para tentar, mas gostaria de ter uma consulta sólida para passar ao meu administrador).


Para obter todos os dados de log de pesquisa dos últimos 3 meses usando o Discourse Data Explorer, você pode criar uma nova consulta com o seguinte código:

-- [params]
-- date :datetime
SELECT
  action_logs.id AS action_log_id,
  action_logs.created_at AS action_log_date,
  action_logs.action AS action_type,
  users.id AS user_id,
  users.username AS user_username,
  users.email AS user_email,
  user_actions.details AS search_query
FROM
  action_logs
JOIN
  user_actions ON user_actions.id = action_logs.action_id
JOIN
  users ON user_actions.user_id = users.id
WHERE
  action_logs.action = 'searched'
  AND action_logs.created_at >= :date - INTERVAL '3 months'
ORDER BY
  action_logs.created_at DESC;

Nesta consulta, usamos a sintaxe -- [params] para definir um parâmetro chamado date do tipo datetime. Este parâmetro permite que você especifique a data para a qual deseja recuperar os dados do log de pesquisa. A consulta então usa este parâmetro para filtrar os logs de pesquisa dos últimos 3 meses a partir da data especificada.

Para usar esta consulta no Discourse Data Explorer, siga estas etapas:

  1. Vá para o painel de administração do seu site Discourse.
  2. Clique em “Data Explorer” no menu do lado esquerdo.
  3. Clique em “New Query” para criar uma nova consulta.
  4. Dê um nome e descrição à sua consulta, se desejar.
  5. Copie e cole o código SQL acima na área de texto “Query”.
  6. Clique no botão “Save” para salvar a consulta.

Uma vez salva, você pode executar a consulta clicando em seu nome no Data Explorer. Um pop-up aparecerá solicitando que você insira o valor do parâmetro para date. Forneça uma data no formato AAAA-MM-DD (por exemplo, 2023-07-28) e clique em “Run Query”.

A consulta recuperará todos os dados de log de pesquisa dos últimos 3 meses a partir da data especificada, e os resultados serão exibidos em formato de tabela.

Não acho que isso esteja certo. Não acho que tenhamos uma tabela action_logs. :thinking:

Deixe-me dar uma olhada e ver o que consigo montar. :+1: :slight_smile:

1 curtida

Acho que algo assim seria mais adequado:

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


WITH results AS (


SELECT LOWER(term) AS term,
       COUNT(*) AS searches,
       SUM(CASE WHEN search_result_id IS NOT NULL THEN 1 ELSE 0 END) AS click_through
FROM search_logs
WHERE created_at BETWEEN :start_date AND :end_date
GROUP BY term

)


SELECT term AS "Termo de Pesquisa",
       searches AS "Pesquisas",
       click_through AS "Cliques",
       CEIL ((click_through/searches::float) * 100) || '%' AS "CTR"
FROM results
ORDER BY searches DESC

Espero que ajude, mas me diga se quiser algum ajuste. :slight_smile:

5 curtidas

Isso é incrível, obrigado! Vou passar para o meu administrador :grinning:

1 curtida

Executamos essa consulta e funcionou perfeitamente, obrigado novamente!

2 curtidas