Discourse Data Explorer

:discourse2: Краткое описание Discourse Data Explorer позволяет выполнять SQL-запросы к вашей базе данных в реальном времени, что обеспечивает актуальную статистику.
:open_book: Руководство по установке Этот плагин входит в состав ядра Discourse. Отдельная установка плагина не требуется.

:information_source: Если вы ищете примеры или поддержку для любых пользовательских запросов, вы можете найти множество тем в нашей категории #data-reporting под тегом sql-query. Если вы не нашли тему, подходящую для ваших конкретных нужд, не стесняйтесь создать новую тему, чтобы попросить сообщество о помощи. :memo: Помощь с запросами

:discourse2: Хостинг у нас? Этот плагин доступен в наших планах Business и Enterprise. Data Explorer | Discourse - Civilized Discussion

После установки плагина перейдите в раздел /admin/plugins.

de1

Нажмите кнопку «Настройки» (Settings), включите параметр data explorer enabled, затем вернитесь и обновите страницу.
В навигационной панели с вкладками должна появиться вкладка «Data Explorer». Выберите ее или перейдите по адресу /admin/plugins/discourse-data-explorer, затем используйте кнопки +, Импорт или Запуск, чтобы начать работу.

Запросы по умолчанию

При чистой установке Data Explorer поставляется с несколькими запросами, которые помогут вам получить представление об активности вашего форума. Откройте любой запрос и нажмите Запуск, чтобы протестировать его.

Вот как выглядят стандартные запросы.

Примечание: Запросы по умолчанию берутся из этого файла: discourse-data-explorer/lib/discourse_data_explorer/queries.rb at main · discourse/discourse-data-explorer · GitHub

Если у вас есть отличный запрос, который вы хотите, чтобы использовали все, отправьте Pull Request, как этот.

Запросы по умолчанию нельзя редактировать. Если вы хотите их изменить, скопируйте SQL-код и вставьте его в новый запрос.

Написание запросов

Когда вы нажимаете кнопку Редактировать в представлении запроса или создаете новый запрос в Data Explorer, вы видите экран, похожий на приведенный ниже:

Две верхние ячейки — это имя и описание запроса. Имя используется при выборе из выпадающего списка, а описание должно использоваться для пояснения того, что нужно вводить в параметры запроса, или для описания того, какие данные запрашиваются.

Левая панель — это место, где вы пишете SQL-запрос. Там предоставляется базовая подсветка синтаксиса и проверка.

Автоматический запуск запросов

Хотя вы всегда можете запустить запрос, нажав кнопку Запуск, вы можете сэкономить время при загрузке запроса, добавив параметр run в URL.

Например: /admin/plugins/discourse-data-explorer/queries/123?run

Когда этот параметр добавлен в URL, запрос будет выполнен сразу после загрузки страницы, поэтому вам не нужно нажимать кнопку Запуск, чтобы увидеть результаты. Это особенно полезно для запросов, которые вы выполняете часто, позволяя добавлять их в закладки или на боковую панель с параметром run для отчета в один клик.

Импорт запросов

Для примера давайте импортируем запрос, который я написал. Скачайте этот файл, затем откройте диалог импорта, выберите файл для загрузки или вставьте запрос в текстовое поле. Нажмите «Импорт», чтобы сохранить его, а затем нажмите Запуск, чтобы увидеть результаты.

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

Похоже, все разработчики Discourse очень любят друг друга :heart:

Поиск запросов

Если вы накопили слишком много отличных запросов, это не проблема! Строка поиска поможет вам отфильтровать запросы по названиям и описаниям.

Разрешение группам, не являющимся персоналом, запускать запросы

Вы можете добавить конкретные группы (включая модераторов) в запрос, чтобы предоставить им доступ к нему:

После сохранения вы можете найти его на странице групп для этой конкретной группы на вкладке Отчеты:

Нажмите любой запрос, чтобы открыть его, а затем кнопку Запуск, чтобы увидеть результаты. Вы также можете добавить групповые отчеты в закладки, нажав кнопку Добавить в закладки.

Обмен запросами с предопределенными параметрами

Если вы включили определяемые пользователем параметры в свой запрос, вы можете поделиться ссылкой на запрос и включить параметры в URL, чтобы они были предварительно заполнены при загрузке страницы.

Вы должны включить параметры в URL в этом формате params={"parameter_name":"value"}. Разделяйте несколько параметров запятыми. Например:

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

В сочетании с параметром run упомянутым выше вы можете поделиться отчетом с предопределенными параметрами, который автоматически запускается при загрузке.

Ограничения результатов и экспорт запросов

При выполнении больших запросов вы можете заметить, что существует ограничение на количество строк, которые отображает Data Explorer. По умолчанию лимит установлен на 1000 строк. Это сделано для предотвращения чрезмерно больших запросов, которые могут замедлить работу или нарушить производительность вашего экземпляра Discourse.

Если вы хотите обойти это ограничение, у вас есть несколько вариантов:

  1. Пагинация: Вы можете использовать пагинацию результатов. Вместо того чтобы пытаться вернуть все результаты сразу, вы можете написать запрос так, чтобы он возвращал определенный диапазон результатов. Затем вы можете изменять этот диапазон, чтобы просматривать различные разделы ваших данных. Это не увеличит лимит, но позволит вам просматривать все ваши данные по частям.
  2. Увеличение лимита: Если у вас есть доступ к серверу Discourse и вы чувствуете себя уверенно при внесении изменений в настройки Discourse, вы можете увеличить лимит. Однако это следует делать с осторожностью. Увеличение лимита может создать большую нагрузку на ваш сервер, если вы не будете осторожны, особенно если несколько пользователей выполняют большие запросы одновременно.
  3. Скачивание результатов: У вас также есть возможность скачивать результаты запроса вместо того, чтобы просматривать их непосредственно в Discourse, нажав кнопки JSON или CSV после выполнения запроса. Данные, скачанные из запроса в формате JSON или CSV, имеют гораздо более высокий лимит результатов в 10 000 строк. Для программных целей вы хотите выбрать формат Json, или, если вы хотите работать с данными в приложении для работы с электронными таблицами, формат CSV может быть более удобным.

Обычно хорошей идеей является попытка написать более эффективные запросы или отфильтровать данные так, чтобы вы получали только то, что вам нужно, вместо того чтобы пытаться обойти лимит.

Вы также можете экспортировать сам SQL-запрос в формате .JSON, нажав кнопку Экспорт. Запросы, экспортированные этим способом, можно затем импортировать на другие сайты Discourse или использовать с сторонними приложениями.

План запроса

Флажок «Включить план запроса» можно использовать для лучшего понимания и оптимизации ваших SQL-запросов.

Когда вы устанавливаете этот флажок и запускаете запрос, Discourse отобразит последовательность операций, используемых для доступа к данным в базе данных Discourse. Это может включать такие операции, как сканирование, объединение, сортировка и другие действия базы данных. Изучив план запроса, вы сможете увидеть, как именно база данных выполняет ваш запрос.

Серия уроков по Data Explorer

У нас также есть отдельная серия sql-tutorial, посвященная Data Explorer! Если вы заинтересованы в изучении написания SQL-запросов в Discourse, мы настоятельно рекомендуем прочитать темы в этой серии:

121 лайк
Data Explorer Tutorial - Part 1 - Writing Your First Query
Daily graph of user time online
Data Explorer Tutorial - Part 2 - Discourse SQL Basics
Formatting Data Explorer Table Results
Visual forum statistics
Extracting email addresses for a group
Visual map of users
How do I download a record of top posts or most clicked links?
Tags: how can admin see who is following what tags?
Can I see in the statistics which post received the most likes
External Data Analysis
Redesign of use profile
Can staff be able to see real author of anonymous posts
How to search/filter untagged topics
Exporting all Topic titles and IDs?
Retrieving user information via REST API
How to measure active users?
Discourse view file update does not reflect in browser
Scan IP matched accounts
Create report for amount of interactions per user
Where to find User ID information
CSV of all editeds post by moderator
Can I access my Discourse forum database?
How to look up a user based on a user_id?
Can I make a plug-ins to view a certain group of people?
Legal Tools Plugin
[Paid] Data explorer queries for ticketing system use case
Transactional Email Service (Open Source)
Direct connect to the Discourse Database
See what categories new users (& other trust levels) post in most
How can I extract the adminstrative records for a EU GDPR request?
Counting and reporting post views for commercial forum users (so we can charge them per-view)
Top user list public
How do I audit votes for fraudulent behavior
How do I get a list of all users from the API?
Tracking referrals? Encouraging users to invite others?
Display Data Explorer query results in WordPress (with TwigAnything)
Database's Data Model?
Filter or create statistics
How do I add users to a group?
Discourse disk space limits per user?
Masonry Image Gallery
Estimated timeline on a project?
Report on User Fields?
Dashboard - Segment number of Posts and Topics by team
Badge image missing issue
Traditional multi level hierarchy vs flat discourse hierarchy
Is there a Trust Level Permissions Table?
Deleting posts by banned users with < 3 posts?
Calculating "Top" topics in Discourse
Is there a way to Search by Posts with No Staff replies on it
How to use SQL to query discourse database
Specify user by external id
How to check the uniqueness of users in "hot link" badge?
Active users per day
Questions about moving an existing forum to Discourse
Get a user object by username or id javascript
Best Practices on reply-by-email
Most liked reply
Likes on a post
Group forum members based on topics viewed?
The metrics on dashboard, do they include activities from administrators?
Can I access Discourse forum Database to use for PowerBI reporting?
Is there a log of user visits?
Find posts "solved" in specific month
Anonymous User Groups
Any way to NOT send emails when a topic category is changed?
View/read by user or of user's posts?
After server migration the images in posts aren't downloadable anymore
Bug with [code]anything[/code] on a single line by itself
Logo is not appearing showing broken after upload
Configuring how users can create and send invites for others to join your community
Users reporting lots of 502 errors when attempting to post due to "max consecutive replies" check
Wildcard search
What would you like to see on your Discourse 2.0 Admin Dashboard?
TeamSpeak Usergroups Sync
Use tags to duplicate images?
Database Access required for our forum
Updated discourse and now site fails to display
Automatic badge expiration
Looking to switch from Vanilla, and have a few questions
Comment on a question instead of answering it
How to create custom reports
Deleted username but can not use that username in other user
Category Remains Muted after Category is available to Everyone
Can staff see who voters in anonymous polls?
Speak to a Discourse Data Analytic representative
How do I pull a report for a single community member?
Report Links to New Topics by Date?
Excluding Suspended, Silenced and Suspect Users When Exporting
Theme-Component v Plugin: What's the difference
Export topics to Excel
Is there a document introducing the database schema design?
Overview which trust level has which possibilities
Why are some users greyed out?
How to get reports for just a specific category?
How to get posts viewed by a user via APIs?
Reports for group message statistics
TimeStamp of Tag
How we put people in a category?
Is it possible to see the dates of all scheduled topics?
Topic Count Per User for Custom Date?
Searching for unassigned topics
Reports by Discourse
How to see all invites and invite tree?
How can I get the list of Discourse Topic IDs dynamically
How to edit sign up form?
Filter posts with images (gallery view)
Tracking unique contributors
New users who visited this month?
Making report on group membership?
Where to find post contents in the database
Searching All Messages as an Administrator
Are Staff and All Groups Included in Dashboard Reporting?
Deleted user with rails console u.delete -> email still "taken"
First Name, Last Name
User posts export as csv or text
User Messages Inbox Error 500
Description of fields returned by Discourse API
Failed to bootstrap due to out of memory killer
Inviting Feedback for Discourse Wiki ("Morphpedia")
What will happen to my forum if discourse suddenly stopped?
Why aren't warnings easily accessible like suspensions are?
Create a Data Explorer query using the API
Automate the syncing of Discourse queries to Google Sheets
Organization of community Data Explorer queries
Get total list of topics and their view counts from Discourse API
Working around the 10,000 result limit of data explorer?
Selecting the Quarter results in custom way
Create a Report on Profile data
Who marked Solution for Topic
Can you view a 'revised' post after it has been revised
More data from Admin reports
Regarding possibility to use Discourse as an alternative to JIRA or Zendesk
Retrieve latest posts by ID
More granular Discourse metrics?
Dump all conversations in a file and structured data
Login type report / list?
Special role to access dashboard
Best API for All First Posts in a Category
Data Explorer: Posts by Category (Including Subcategories)
Can the period stats use custom time frames to not be limited to only the most recent period?
Tracking who accepted which invite link
Advanced Search: Find posts having staff color
2021: The Year in Review
Filter topics not answered by Staff
Can I download a user database and sort by time viewed?
Category API request downloads all topics
User Data By Date Rage
Browse the Postgres database
How do I extract raw data from my discourse community site?
Some issues with searching (sorting, searching deleted posts and such)
How to Delete Uploaded Files?
How to show badges in the message list?
How to show badges in the message list?
How to find pageview data for a specific topic?
Badges for X Number of Solutions Created?
Permanent deletion bug
Adding SSO after many users already signed up -- how to migrate them?
How could I get voters from a poll?
Notifications from muted categories when mailing list mode is enabled
API: how to get joined at date in user summary
Edit a user preference for everyone or a subset of users
Create a Network chart of your forum - data visualization
Discourse Narrative Bot Data Explorer Queries :robot:
How do I get a report of total topics by subcategory for all subcategories please?
Plugin causing errors during rebuild
User field searching / reporting
Admin dashboard report reference guide
Comment, Question, & Discussion Level Agreement Voting - is there an extension?
How to find deleted posts
SQL query for last created users of the past 30 days
How can I see Survey Results or Responses
Is there a plugin for detecting forum access data?
How to show non-staff posts with zero replies
Viewing all published pages in a single site window
Accessing a user's chat activity
Configure Facebook login for Discourse
Admin Reporting & Analysis: Incremental Changes
Access to OpenID claims data?
How to calculate engagement rate for Discourse?
How to export more than the 10,000 limit?
`/admin/customize/permalinks` only shows ~100 permalinks
Can we delete all 'Automatically Bumped' msgs in one go?
User Status
Sort or Order post with combination of both (Replies + Activity)
Dynamically update available user field values during a profile fill in
Can I create a dashboard for a specific group inside the community?
Error during upgrading from Beta 3.1.x to latest
Must have plugins and components for Discourse?
Full IP access log
Available settings for global rate limits and throttling
How can I use GUI to access the postgresql db in docker
Data Explorer query for topics N+ days old, that are unsolved
Page Publishing
Tips for Exporting User Data
Identify private message interactions between users
View tag changes
Types of community & their characteristics
Discourse Chatbot :robot:
Run Data Explorer queries with the Discourse API
2023: The Year in Review
"Ensure ad-blockers are disabled and try reloading the page." when enabling Data Explorer
Exploring Discourse Data Explorer on my Sandbox
Order/Filter searched topics by latest update to First Post
Discourse Automation
API Filter users by emails, including secondary emails
How do I clear user warnings?
Exclude certain categories from the Trust Levels
Topic Ratings Plugin
Forum Data
Is it possible to view all staff notices?
Discourse Retort
Advice on archiving a site
Cleaning up uploads and purging uploads from S3
Content Audit : Report to pull Categories, Topics and Replies
Exporting all Forum Posts for Manual Upload into External LLMs?
discourse容器部署方式下,如何在外部连接到数据库,例如使用DBeaver连接
I'm attempting to merge user accounts
获取昨日点赞或者浏览量,前10的帖子
Populate Data Explorer params with URL params
AI sentiment and emotion analysis reports
Bulk Export of Raw Post Sources with Markup
Bundling more popular plugins with Discourse core
Setting up automated admin notice alerts
Listing event invitees with email addresses
More charting options for Data Explorer
Topics list filter feature
Migrate a phpBB3 forum to Discourse
Using Parameters in Data Explorer Queries
How to find how long a user has viewed a topic/who has posted new topics/country of users
Error trying to edit a post with an image in (NginX Proxy Manager?)
Restrict moderator access to only the stats panel on the admin dashboard?
How does auto-close topics work?
Poll: Export poll results in CSV for quiz creator?
Query to find out who marked the solution as solved
Possible to run a report for most posts within community?
Add an Admin subtab for Inactive users
Questions regarding Discourse features
How to query an email list of users that are not actived
Advice on a support forum
Shopify Integration
How do I see Facebook signups?
Creating and managing polls
Poll: Export poll results in CSV for quiz creator?
Discourse disk space limits per user?
Sorting all users by total posts?
SQL: The most N used words per user (speak their language!)
User Summary - Most Liked By user attributions are incorrect
Maximum Number of Search Results?
Get only top level posts in topic via discourse API
How to get all the deleted posts for a specific topic
Stats reports on a per-category basis?
Data analytics by complex networks and text mining
Error thrown when importing a query in Data Explorer
Zero search results searching private messages for specific keyword
A way to see full list of users granted with a certain badge?
Who messaged the most?
Who messaged the most?
How to open hyperlinks in a new tab
Run report of digest Unsubscribes
Need log the who downloaded attachments
Poll problem - exact vote numbers needed
Telegram Notifications Plugin (discourse-telegram-notifications)
Get last :heart: via API
Is it possible to keep the votes history of a poll?
How do I check a badge's status midway to it being awarded?
What plugins do you use - and why?
Export list of users based on date range
How to get all posts a user interacted with?
How can I email all recently active users?
Raw Function limited to 100

Привет! :slight_smile:

Я задал вопрос в этой теме о том, как скопировать ссылки на все темы из поискового запроса. Мне посоветовали обратиться сюда. Я спросил администратора нашего форума, установлен ли у нас этот плагин, и он подтвердил, что да. Однако мы не знаем, как использовать его для копирования всех ссылок из поискового запроса в CSV-файл. Кто-нибудь уже делал что-то подобное и может подсказать, куда двигаться? :sweat_smile:

Обратите внимание: я обычный пользователь форума и не имею прав модератора. Но я передам эту информацию администратору сайта, у которого есть такие права, и он сможет мне помочь. :slight_smile:

Заранее спасибо!

Привет, Престон!

Плагин Data Explorer позволяет создавать SQL-запросы.

Вы хотите создать новый запрос, который будет отображать нужные вам темы.

Затем при запуске запроса вы увидите кнопку CSV для экспорта результата в CSV-файл.

Надеюсь, это поможет!

Дайте знать, если вам потребуется дополнительная помощь в создании запроса!

3 лайка

Спасибо! Я передам это :hugs:

3 сообщения были перенесены в новую тему: Обход ограничения в 10 000 результатов для Data Explorer?

Привет! У меня есть предложение по улучшению для этого замечательного плагина.

Некоторые отчёты, которые я создаю с помощью Data Explorer, были бы очень полезны моей команде, если бы я мог отображать их на странице «Отчёты дашборда» (/admin/reports).

Возможно ли добавить для каждого запроса Data Explorer опцию для отображения на странице «Отчёты»? Спасибо.

Например:

  • Показать этот пользовательский запрос на странице Отчёты
3 лайка

Спасибо за эту функцию!

Я изучаю возможность написания пользовательских метрик. Мы используем Discourse вместе с Workadventu.re (инструмент для совместной работы с аудио/видео на основе 2D-аватаров).
Я запускаю там пользовательский скрипт для записи активностей в Google-таблицу через вебхук. Чтобы все было централизовано в нашем основном инструменте (Discourse), было бы здорово отображать эти данные в Discourse…
Есть какие-нибудь советы?!

1 лайк

Я очень надеялся, что существует конструктор запросов, который поможет писать SQL. Мой опыт работы с SQL устарел и притупился, а написание запросов вручную чревато ошибками и занимает много времени. Было бы здорово, если бы существовал более простой способ!

2 лайка

Привет, @davidgs, добро пожаловать на Meta :wave: :slight_smile:

Вы пробовали использовать LLM, например ChatGPT? Он достаточно хорошо понимает Discourse и показал себя довольно надёжным, когда мне тоже нужно было создавать запросы для Data Explorer.

Я часто формулирую свои запросы так: «Напиши запрос для Data Explorer в Discourse, который возвращает x, y, z из таблиц a, b, c, где …», и получаю вполне приемлемый результат.

В правом верхнем углу этой страницы вы также можете увидеть маленькую иконку робота, как на изображении ниже.
image

Если она есть, вы также можете попробовать использовать ИИ-помощника (AI Helper Bot), интегрированного с Meta.

2 лайка

Большинство из нас его не видят. Но всегда есть ask.discourse.com

2 лайка

Да, я не мог вспомнить, связано ли это всё ещё только с уровнем доверия 3 или нет. Хороший совет насчёт сайта ask.discourse.com.

В качестве примера я ввёл в текстовое поле ask.discourse.com запрос: напиши запрос к Data Explorer Discourse, который возвращает список всех пользователей, упомянувших слово «software», и получил следующий запрос:

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;

Весьма разумно. Я также могу подтвердить, что этот инструмент справляется с гораздо более сложными запросами.

2 лайка

Неизвестным образом экспорт данных из Data Explorer перестал работать после обновления Discourse и плагина Data Explorer, установленных около двух часов назад. Сами данные генерируются корректно, но их больше нельзя экспортировать.

При нажатии на кнопки JSON или CSV происходит лишь кратковременная вспышка, после чего ничего не происходит. Два недели назад всё работало нормально.

В консоли веб-браузера я вижу следующую ошибку:
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 лайк

Спасибо за отчет об ошибке, @GuidoD!

Я уже сегодня применил исправление для этой проблемы. Пожалуйста, попробуйте обновиться и подтвердите, что у вас всё работает. :slight_smile:

2 лайка

спасибо за быстрое исправление.
Я могу подтвердить, что всё снова работает нормально.

1 лайк

Для небольшого объёма данных экспорт в JSON и CSV работает корректно. Однако при большом объёме данных экспорт в CSV проходит успешно, а экспорт в JSON завершается ошибкой 502 Bad Gateway на Nginx (вероятно, из-за тайм-аута по истечении 30 секунд, так как создание JSON-файла занимает больше 30 секунд).

Есть ли простой способ увеличить значение тайм-аута в Nginx?

Если сократить временной диапазон запроса, размер CSV-файла составит 12,9 МБ, а JSON-файла — 645 МБ. Общий размер CSV-файла — 13,5 МБ, то есть лишь немного больше, но JSON-файл не создаётся из-за ошибки Nginx.

Возможно, создание JSON-файла завершается ошибкой из-за каких-то некорректных данных. Создаёт ли процесс создания JSON-файла файл журнала?

Запросы JSON по умолчанию выполняются с более высоким внешним LIMIT по сравнению с запросами CSV. Добавьте пользовательскую пагинацию внутри запроса, чтобы обеспечить его завершение в установленное время.

1 лайк

Возможно ли выполнять операторы UPDATE из Data Explorer?

Я пытаюсь выполнить массовое обновление определённой таблицы, но получаю эту ошибку:

PG::FeatureNotSupported: ERROR:  WITH query "query" does not have a RETURNING clause
LINE 29:   ) SELECT * FROM query

Нет, Data Explorer выполняет только операции чтения. (Если вы добавите в запрос предложение RETURNING, получите ошибку о том, что транзакция должна быть только для чтения.)

Если вы разворачиваете решение самостоятельно, воспользуйтесь одним из руководств по входу через «launcher enter», например:

Если ваш запрос UPDATE уже готов, вместо rails c можно выполнить psql discourse.

Если вы используете хостинг-сервис, обратитесь в службу поддержки, чтобы они выполнили необходимые изменения.

1 лайк

Спасибо за ответ. Всё логично. Мы используем хостинг, поэтому я свяжусь с их поддержкой.

Если я поделюсь SQL-запросом с группой модераторов, как пользователи из этой группы смогут выполнить запрос от своего аккаунта? Они не видят плагин Data Explorer.