Discourse Data Explorer

:discourse2: Summary Discourse Data Explorer allows you to make SQL queries against your live database, allowing for up-to-the-minute stats reporting.
:open_book: Install Guide This plugin is bundled with Discourse core. There is no need to install the plugin separately.

:information_source: If you’re looking for examples or support for any custom queries, you can find lots of topics in our Data & reporting category under the sql-query tag. If there’s not one to suit your particular needs, please feel free to create a new topic to ask the community for some help. :memo: Query Help

:discourse2: Hosted by us? This plugin is available on our Business and Enterprise plans. Data Explorer | Discourse - Civilized Discussion

After installing the plugin, head to /admin/plugins .

de1

Click on the “Settings” button, and turn on data explorer enabled, then return and reload the page.
There should now be a tab in the stacked nav called “ Data Explorer ”. Select it or head to /admin/plugins/explorer , then use the + , Import or Run buttons to get started.

Default queries

On a fresh install, the data explorer now ships with several queries that can help you draw insights from your forum’s activity. Open any query and click Run to try it out.

Here's what the stock queries look like.

Note: Default queries are picked up from this file: discourse-data-explorer/lib/discourse_data_explorer/queries.rb at main · discourse/discourse-data-explorer · GitHub

If you have an awesome query that you want everyone to have, make a PR just like this one.

Default queries cannot be edited, feel free to copy the sql and paste it into a new query if you’d like to modify them.

Writing queries

When you click any of the Edit buttons on a query view, or start a new Explorer Query, you are presented with a screen like the one below:

The top two boxes are the name and description of the query. The name is what you’re selecting in the dropdown box, and the description should be used for things like explaining what to put in the query parameters or to describe what data is being queried.

The left pane is where you write the SQL query. Minor syntax highlighting and checking is provided.

Automatically running queries

While you can always run a query by clicking the Run button, you can save time when loading a query by adding the run parameter to the URL.

For example: /admin/plugins/explorer/queries/123?run

When this parameter is added to the URL, the query will run as soon as you load the page, so you don’t need to click the Run button to see the results. This is especially helpful for queries you run frequently, allowing you to bookmark them or add them to your sidebar with the run parameter included for a one-click report.

Importing queries

For an example, let’s import one that I wrote. Download this file, then open the import dialog and select the file to be uploaded or paste the query in the text box. Click Import to save it and then click Run to see the results.

most-common-likers.dcquery (1).json (442 Bytes)

Looks like all of the Discourse developers like each other quite a bit :heart:

Searching for queries

If you’ve accumulated too many awesome queries, no problem! The search bar can help you filter through titles and descriptions.

Allow non-staff groups to run queries

You can add specific groups (including moderators) to a query to grant them access to it:

After saving, you can find it from the Groups page for that particular group on the Reports tab:

Click any query to open it and then the Run button to see the results. You can also bookmark group reports by clicking the Bookmark button.

Sharing queries with predefined parameters

If you have included user-defined parameters in your query, you can share a link to the query and include the parameters in the URL so they will be pre-filled when the page loads.

You must include parameters in the URL in this format params={"parameter_name":"value"}. Separate multiple parameters with commas. For example:

discourse.example.com/g/my-group/reports/6?params={"param1":"value1","param2":"value2"}

Couple with the run parameter mentioned above, you can share a report with predefined parameters that runs automatically when loaded.

Result limits and exporting queries

With large queries, you may notice that there is a limit on the number of rows that the Data Explorer will display. By default, the limit is set to 1000 rows. This is to prevent excessively large queries from slowing down or disrupting the performance of your Discourse instance.

If you want to bypass this limit, you have a few of options:

  1. Pagination: You can paginate your results. Instead of trying to return all results at once, you can write your query to return a specific range of results. You can then adjust this range to view different sections of your data. This won’t increase the limit, but it will allow you to view all your data in sections.
  2. Increase the limit: If you have access to the Discourse server and are comfortable making changes to Discourse settings, you can increase the limit. However, this should be done with caution. Increasing the limit can put a lot of load on your server if you’re not careful, especially if multiple users are running large queries at the same time.
  3. Download the Results: You also have the option to download the query results instead of viewing them directly in Discourse by clicking either the JSON or CSV button after running the query. Data downloaded from a query in JSON or CSV format will have a much higher results limit of 10,000 rows. For programmatic purposes, you want want to opt for the Json format, or if you’d like to work on the data in a spreadsheet application, the CSV format might be more convenient.

It’s generally a good idea to try and write more efficient queries, or to filter your data so that you’re only retrieving what you need, rather than trying to bypass the limit.

You can also export the SQL query itself in .JSON format by clicking the Export button. Queries that are exported using this method can then be imported into other Discourse sites, or used with third party applications.

Query plan

The “Include query plan” checkbox can be used for better understanding and optimizing your SQL queries.

When you check this box and run a query, Discourse will display the sequence of operations used to access data in the Discourse database. This can include operations like scans, joins, sorts, and other database actions. By examining the query plan, you can see exactly how the database is executing your query.

The Data Explorer tutorial series

We also have a dedicated sql-tutorial series about the Data Explorer! If you’re interested in learning more about writing SQL queries in Discourse, we highly recommend reading through the topics in this series:

Last edited by @hugh 2025-09-03T00:45:12Z

Last checked by @hugh 2025-09-03T00:45:21Z

Check documentPerform check on document:
119 „Gefällt mir“

Hallo! :slight_smile:

Ich habe in diesem Thread gefragt, wie man die Links zu allen Themen in einer Suchanfrage kopieren kann. Ich wurde hierher verwiesen. Also habe ich den Manager von unserem Forum gefragt, ob wir dieses Plugin installiert haben, was wir haben. Wir wissen jedoch nicht, wie wir es verwenden können, um alle Links aus einer Suchanfrage mit diesem Plugin in eine CSV-Datei zu kopieren. Hat das schon mal jemand gemacht und kann uns vielleicht in die richtige Richtung weisen? :sweat_smile:

Beachten Sie, dass ich ein Stammgast im Forum bin und keine Admin-Rechte habe. Ich gebe diese Informationen jedoch an den Website-Manager weiter, der sie hat und sie für mich erledigen kann. :slight_smile:

Vielen Dank im Voraus!

Hallo Preston!

Das Data Explorer-Plugin ermöglicht es Ihnen, SQL-Abfragen zu erstellen.

Sie möchten eine neue erstellen, die die gesuchten Themen auflistet.

Wenn Sie die Abfrage dann ausführen, sehen Sie eine CSV-Schaltfläche, um das Ergebnis in eine CSV-Datei zu exportieren.

Ich hoffe, das hilft!

Lassen Sie uns wissen, wenn Sie weitere Hilfe beim Erstellen der Abfrage benötigen!

3 „Gefällt mir“

Danke! Ich werde das weitergeben :umarmungen:

3 Beiträge wurden in ein neues Thema aufgeteilt: Umgehung des 10.000-Ergebnis-Limits des Datenexplorers?

Hallo, ich habe eine Funktionsanfrage für dieses großartige Plugin.

Einige der Berichte, die ich mit dem Data Explorer erstelle, wären für mein Team sehr hilfreich, wenn ich sie auf der Seite Dashboard Reports (/admin/reports) auflisten könnte.

Wäre es möglich, jeder Data Explorer-Abfrage eine Option hinzuzufügen, um sie auf der Berichtsseite aufzulisten? Danke.

Zum Beispiel:

  • Diese benutzerdefinierte Abfrage auf der Seite Berichte auflisten
3 „Gefällt mir“

Vielen Dank für diese Funktion!

Ich untersuche, wie wir benutzerdefinierte Metriken schreiben könnten. Wir verwenden Discourse zusammen mit Workadventu.re (einem 2D-Avatar-basierten A/V-Kollaborationstool).
Ich führe dort ein benutzerdefiniertes Skript aus, um Aktivitäten über einen Webhook in ein Google Sheet zu schreiben. Um alles in unserem zentralen Tool (Discourse) zu zentralisieren, wäre es großartig, diese Daten in Discourse ausgeben zu können…
Irgendwelche Tipps?!

1 „Gefällt mir“

Ich hatte wirklich gehofft, dass es einen Query Builder gäbe, der beim Schreiben von SQL hilft. Mein SQL ist alt und eingerostet, und es von Hand zu schreiben ist fehleranfällig und zeitaufwendig. Es wäre wirklich schön, wenn es einen einfacheren Weg gäbe!

2 „Gefällt mir“

Hallo @davidgs, willkommen bei Meta :wave: :slight_smile:

Haben Sie versucht, eine LLM wie ChatGPT zu verwenden? Sie hat ein angemessenes Verständnis von Discourse und war ziemlich zuverlässig, als ich auch Daten-Explorer-Abfragen erstellen musste.

Ich schreibe meine Prompts oft so: „Schreibe eine Discourse-Daten-Explorer-Abfrage, die x,y,z aus a,b,c zurückgibt, wobei …“ und erhalte etwas ziemlich Vernünftiges.

In der oberen rechten Ecke dieser Seite sehen Sie vielleicht auch ein kleines Roboter-Symbol wie unten.
image

Wenn das der Fall ist, könnten Sie auch den AI Helper Bot ausprobieren, der in Meta integriert ist.

2 „Gefällt mir“

Die meisten von uns sehen es nicht. Aber es gibt immer ask.discourse.com

2 „Gefällt mir“

Ja, ich konnte mich nicht erinnern, ob dies immer noch nur eine Sache für Vertrauensstufe 3 war oder nicht. Guter Hinweis auf die Website ask.discourse.com.

Als Referenzbeispiel habe ich „Schreibe eine Discourse-Daten-Explorer-Abfrage, die eine Liste aller Benutzer zurückgibt, die das Wort „Software“ gesagt haben“ in die Texteingabezeile von ask.discourse.com eingegeben und folgende Abfrage zurückerhalten:

SELECT 
    p.user_id, 
    u.username,
    COUNT(p.id) AS post_count
FROM 
    posts p
JOIN 
    users u ON u.id = p.user_id
WHERE 
    p.raw ILIKE '%software%'
GROUP BY 
    p.user_id, u.username
ORDER BY 
    post_count DESC;

Ziemlich vernünftig. Ich kann auch bestätigen, dass es deutlich komplexere Abfragen als diese durchführt.

2 „Gefällt mir“

Der Datenexport des Datenexplorers funktioniert mit den neuesten Discourse- und Data Explorer-Updates, die ich vor etwa zwei Stunden installiert habe, nicht mehr. Die Daten selbst werden zwar korrekt erstellt, können aber nicht mehr exportiert werden.

Wenn Sie auf die JSON- oder CSV-Schaltflächen klicken, erscheint nur ein kurzer Blitz und es passiert nichts weiter. Vor etwa zwei Wochen hat es noch funktioniert.

In der Webbrowserkonsole sehe ich den folgenden Fehler:
CSV:

Uncaught TypeError: this.args.query is undefined
    _downloadResult query-result.js:310
    downloadResultCsv query-result.js:287
    _triggerAction d-button.gjs:160
    Ember 12
    _triggerAction d-button.gjs:157
    click d-button.gjs:106

JSON:

Uncaught TypeError: this.args.query is undefined
    _downloadResult query-result.js:310
    downloadResultJson query-result.js:283
    _triggerAction d-button.gjs:160
    Ember 12
    _triggerAction d-button.gjs:157
    click d-button.gjs:106
1 „Gefällt mir“

Danke für die Fehlerberichterstattung, @GuidoD!

Ich habe heute früher eine Korrektur für dieses Problem zusammengeführt. Bitte versuchen Sie, ein Update durchzuführen und bestätigen Sie, ob es für Sie funktioniert. :slight_smile:

2 „Gefällt mir“

Danke für die schnelle Korrektur.
Ich kann bestätigen, dass es wieder einwandfrei funktioniert.

1 „Gefällt mir“

Bei einer kleinen Datenmenge funktionieren der Export nach JSON und CSV beide einwandfrei. Bei einer größeren Datenmenge funktioniert der CSV-Export einwandfrei, aber der JSON-Export führt zu einem nginx 502 Bad Gateway (wahrscheinlich aufgrund eines Timeouts nach 30 Sekunden, da die Erstellung der JSON-Datei länger als 30 Sekunden dauert).
Gibt es eine einfache Möglichkeit, den nginx-Timeout-Wert zu erhöhen?

Wenn ich den Zeitrahmen der Abfrage reduziere, ist die CSV-Datei 12,9 MB und die JSON-Datei 645 MB groß. Die gesamte CSV-Datei ist 13,5 MB groß, also nur etwas größer, aber die JSON-Datei wird aufgrund des nginx-Fehlers nicht erstellt.

Oder vielleicht schlägt die Erstellung der JSON-Datei aufgrund seltsamer Daten fehl. Erstellt die Erstellung der JSON-Datei eine Protokolldatei?

Die JSON-Abfragen werden standardmäßig mit einem höheren äußeren LIMIT ausgeführt als die CSV-Abfragen. Fügen Sie eine benutzerdefinierte Paginierung innerhalb der Abfrage hinzu, um sicherzustellen, dass sie rechtzeitig abgeschlossen wird.

1 „Gefällt mir“

Ist es möglich, UPDATE-Anweisungen aus dem Data Explorer auszuführen?

Ich versuche, eine Massenaktualisierung einer bestimmten Tabelle durchzuführen, erhalte aber diesen Fehler:

PG::FeatureNotSupported: FEHLER:  WITH-Abfrage „query“ hat keine RETURNING-Klausel
ZEILE 29:   ) SELECT * FROM query

Nein, Data Explorer führt nur schreibgeschützte Transaktionen aus. (Wenn Sie Ihre Abfrage mit einer RETURNING-Klausel aktualisieren würden, würden Sie eine schreibgeschützte Transaktionsfehlermeldung erhalten.)

Wenn Sie selbst hosten, verwenden Sie eine der Anleitungen „launcher enter“, wie z. B.

Wenn Sie Ihr UPDATE bereits entworfen haben, können Sie stattdessen psql discourse anstelle von rails c verwenden.

Wenn Sie sich auf einem gehosteten Dienst befinden, wenden Sie sich an den Support, um die Änderung ausführen zu lassen.

1 „Gefällt mir“

Danke für die Antwort. Macht Sinn. Wir nutzen einen Hosting-Service, also werde ich ihren Support kontaktieren.

Wenn ich eine SQL-Abfrage mit der Moderator-Gruppe teile, wie können die Benutzer in der Moderator-Gruppe die Abfrage von ihrem Konto aus ausführen? Sie können das Data Explorer-Plugin nicht sehen.