Liste de souhaits : SQL pour les rapports prédéfinis

Je me retrouve assez régulièrement à vouloir prendre l’un des rapports standard (aujourd’hui, il s’agit des Vues de page consolidées) et à aller un peu plus loin avec.

Plutôt que de devoir tout recommencer, ce serait un incroyable :christmas_tree: :gift: si je pouvais passer du rapport à sa requête SQL pour itérer.

2 « J'aime »

Il n’est pas construit avec SQL, mais ce n’est pas grave, nous pouvons le dériver…

Voici le guide général sur Meta :

Spécifiquement : discourse/app/models/concerns/reports/consolidated_page_views.rb at main · discourse/discourse · GitHub

Il est construit à l’aide de un modèle Rails, ApplicationRequest, par exemple :

[3] pry(main)> ApplicationRequest.last(10)
=> [#<ApplicationRequest:0x000055c8edcf99f8 id: 4798, date: Thu, 17 Nov 2022, req_type: "http_total", count: 3080>,
 #<ApplicationRequest:0x000055c8edcf9ac0 id: 4799, date: Thu, 17 Nov 2022, req_type: "http_background", count: 1014>,
 #<ApplicationRequest:0x000055c8edcf9bb0 id: 4800, date: Thu, 17 Nov 2022, req_type: "page_view_crawler", count: 539>,
 #<ApplicationRequest:0x000055c8edcf9c78 id: 4801, date: Thu, 17 Nov 2022, req_type: "http_2xx", count: 1929>,
 #<ApplicationRequest:0x000055c8edcf9d68 id: 4802, date: Thu, 17 Nov 2022, req_type: "http_4xx", count: 52>,
 #<ApplicationRequest:0x000055c8edcf9e30 id: 4803, date: Thu, 17 Nov 2022, req_type: "http_3xx", count: 85>,
 #<ApplicationRequest:0x000055c8edcf9f20 id: 4804, date: Thu, 17 Nov 2022, req_type: "page_view_anon", count: 40>,
 #<ApplicationRequest:0x000055c8edcf9fe8 id: 4805, date: Thu, 17 Nov 2022, req_type: "page_view_logged_in", count: 148>,
 #<ApplicationRequest:0x000055c8edcfa0d8 id: 4806, date: Thu, 17 Nov 2022, req_type: "page_view_logged_in_mobile", count: 134>,
 #<ApplicationRequest:0x000055c8edd00a00 id: 4807, date: Thu, 17 Nov 2022, req_type: "page_view_anon_mobile", count: 2>]

La table correspondante dont vous avez besoin est application_requests (mais je ne la vois pas exposée dans Data Explorer, peut-être l’ai-je manquée ?)

Les req_type dans ce rapport sont :

  page_view_logged_in
  page_view_anon
  page_view_crawler

C’est une somme et un regroupement réguliers, donc probablement, vous pourriez commencer par, sur la console Rails :

ApplicationRequest.where(req_type:["page_view_logged_in", "page_view_anon", "page_view_crawler"]).where('date BETWEEN ? AND ?', '11/14/2022', '11/17/2022')

par exemple

ou l’équivalent SQL :

SELECT * FROM application_requests WHERE req_type IN (7, 8, 6) AND (date BETWEEN '11/14/2022' AND '11/17/2022')

Une partie de l’agrégation est déjà faite pour vous car les données se trouvent dans une colonne de comptage.

3 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.