Как изменить response default_limit в Data Explorer?

Привет,

Какой лучший способ установить default_limit на значение вроде 12345678?
Предположим, что мне нужно и я хочу больше 1000 строк.

Я не понимаю, о каком default_limit вы говорите. Я не вижу его в site_settings.yml. Что вы пытаетесь сделать? И пытаетесь ли вы сделать это в плагине или компоненте темы (поскольку вы опубликовали в разделе для разработчиков)?

Ограничение по умолчанию для плагина data-explorer…

Хорошо, единственный способ — задать другое значение, например так:
Я надеялся, что в интерфейсе настроек Discourse есть более простой вариант.

./launcher enter app
cd /var/www/discourse/plugins/discourse-data-explorer/
sed -i 's/QUERY_RESULT_DEFAULT_LIMIT = 1000/QUERY_RESULT_DEFAULT_LIMIT = 12345678/g' /var/www/discourse/plugins/discourse-data-explorer/plugin.rb
sed -i 's/QUERY_RESULT_MAX_LIMIT = 1000/QUERY_RESULT_MAX_LIMIT = 12345678/g' /var/www/discourse/plugins/discourse-data-explorer/plugin.rb

Определенно не единственный способ.

Как указано в моей ссылке, вы можете форкнуть плагин, изменить константу и клонировать свой форк.

Вы всегда можете предложить через PR настройку плагина для этого плагина…

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

Если это не единственный способ, не могли бы вы привести пример? Спасибо.

Недавно они изменили код, добавив новые скрытые настройки…

cd /var/discourse
./launcher enter app
sed -i 's/QUERY_RESULT_DEFAULT_LIMIT = 1000/QUERY_RESULT_DEFAULT_LIMIT = 10000000/g' /var/www/discourse/plugins/discourse-data-explorer/plugin.rb
sed -i 's/QUERY_RESULT_MAX_LIMIT = 1000/QUERY_RESULT_MAX_LIMIT = 10000000/g' /var/www/discourse/plugins/discourse-data-explorer/plugin.rb
sed -i 's/default: 1000/default: 10000000/g' plugins/discourse-data-explorer/config/settings.yml
sed -i 's/max: 10000/max: 10000000/g' plugins/discourse-data-explorer/config/settings.yml
rails c
SiteSetting.data_explorer_query_result_limit=1000000
exit
exit
reboot

Как можно наиболее прямым способом изменить такую «скрытую настройку»?

Надеюсь, для изменения такого базового ограничения плагина не потребуется редактировать код.

Вы можете изменить скрытую настройку сайта через консоль Rails (если у вас есть доступ к серверу).

cd /var/discourse
./launcher enter app
rails c
SiteSetting.data_explorer_query_result_limit = 10000

Хотя верхний предел составляет 10 000, и, насколько я понимаю, это касается только количества результатов, отображаемых «на экране», вы уже можете экспортировать 10 000 результатов даже при настройке по умолчанию в 1000.

Я считаю, что добавление смещения страницы (page offset) к вашему запросу полезно, если вы хотите извлекать порции данных для экспорта и объединять их в электронной таблице (и т. д.). Например:

-- [params]
-- integer :page = 0
-- integer :limit = 10000

SELECT 
    category_id,
    created_at::date,
    id AS topic_id,
    views
FROM topics
WHERE deleted_at IS NULL
ORDER BY created_at DESC
OFFSET :page * :limit
LIMIT :limit

При запросе через API я получил только 1000 результатов. Учитывая значительные накладные расходы на каждый запрос (в 100 раз больше, чем при прямом запросе к базе данных), я предпочитаю увеличить этот лимит, а не выполнять несколько запросов. :slight_smile:

Остаётся ли подход с rail console неизменным после обновлений программного обеспечения и перезапусков?

Изменение настройки сайта через консоль Rails аналогично изменению через интерфейс (просто для скрытых настроек интерфейса нет :slight_smile:), поэтому изменение сохранится и не будет затронуто перестройками или перезапусками и т. д. :+1:

Мои знания о запуске через API не так хороши, как обычный способ, но я думаю, что в этой теме есть способ получить полные 10 000 без изменения настройки в консоли Rails: Run Data Explorer queries with the Discourse API

Спасибо, этот параметр limit=ALL решает мою проблему.