Recherche de journaux - Comment obtenir une liste complète pour une plage de dates donnée ?

Existe-t-il un moyen d’obtenir une liste complète des recherches pour une plage de dates donnée, au lieu des 100 premières ?

Je pense que cela pourrait être une requête pour un explorateur de données. Je devrais chercher un peu pour construire la requête exacte, mais je pense que les données se trouvent dans la table search_logs.

N’hésitez pas si vous avez besoin d’aide supplémentaire. :slight_smile:

3 « J'aime »

Je ne connais pas SQL, mais voici ce que ChatGPT m’a dit lorsque j’ai demandé comment interroger les journaux de recherche des 3 derniers mois. Cela fonctionnerait-il (je n’ai pas d’accès administrateur pour l’essayer, mais j’aimerais avoir une requête solide à transmettre à mon administrateur).


Pour obtenir toutes les données des journaux de recherche des 3 derniers mois à l’aide de Discourse Data Explorer, vous pouvez créer une nouvelle requête avec le code suivant :

-- [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;

Dans cette requête, nous utilisons la syntaxe -- [params] pour définir un paramètre nommé date de type datetime. Ce paramètre vous permet de spécifier la date à partir de laquelle vous souhaitez récupérer les données des journaux de recherche. La requête utilise ensuite ce paramètre pour filtrer les journaux de recherche des 3 derniers mois à partir de la date spécifiée.

Pour utiliser cette requête dans Discourse Data Explorer, suivez ces étapes :

  1. Accédez au tableau de bord d’administration de votre site Discourse.
  2. Cliquez sur « Data Explorer » dans le menu de gauche.
  3. Cliquez sur « New Query » (Nouvelle requête) pour créer une nouvelle requête.
  4. Donnez un nom et une description à votre requête si vous le souhaitez.
  5. Copiez et collez le code SQL ci-dessus dans la zone de texte « Query » (Requête).
  6. Cliquez sur le bouton « Save » (Enregistrer) pour enregistrer la requête.

Une fois enregistrée, vous pouvez exécuter la requête en cliquant sur son nom dans Data Explorer. Une fenêtre contextuelle apparaîtra vous demandant d’entrer la valeur du paramètre pour date. Fournissez une date au format YYYY-MM-DD (par exemple, 2023-07-28) et cliquez sur « Run Query » (Exécuter la requête).

La requête récupérera toutes les données des journaux de recherche des 3 derniers mois à partir de la date spécifiée, et les résultats s’afficheront sous forme de tableau.

Je ne pense pas que ce soit juste. Je ne pense pas que nous ayons une table action_logs. :thinking:

Laissez-moi regarder et voir ce que je peux concocter. :+1: :slight_smile:

1 « J'aime »

Je pense que quelque chose comme ceci serait plus approprié :

-- [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 "Terme de recherche",
       searches AS "Recherches",
       click_through AS "Clics",
       CEIL ((click_through/searches::float) * 100) || '%' AS "CTR"
FROM results
ORDER BY searches DESC

J’espère que cela vous aidera, mais faites-moi savoir si vous souhaitez des ajustements. :slight_smile:

5 « J'aime »

C’est génial, merci ! Je vais le transmettre à mon administrateur :grinning:

1 « J'aime »

Nous avons exécuté cette requête et elle a parfaitement fonctionné, merci encore !

2 « J'aime »