Здравствуйте! Я использую следующий запрос для проверки принятых решений за текущий месяц. Однако я не вижу данных после марта. Кроме того, эти цифры не совпадают с теми, что отображаются в отчёте «Принятые решения». Не могли бы вы дать мне какие-либо рекомендации по поводу того, что я делаю не так?
SELECT DISTINCT
YEAR(p.created_at), MONTH(p.created_at),
count(distinct(p.topic_id))
FROM posts p
JOIN posts_custom_fields pcf ON pcf.post_id = p.id
WHERE (pcf.name = 'is_accepted_answer' AND pcf.value = 'true') AND YEAR(p.created_at) = 2025
GROUP BY 1,2
Проанализировав ваш запрос, могу сказать, что причина отсутствия данных после марта и расхождений цифр с отчётом «Принятые решения» (Accepted Solutions Dashboard Report) заключается в том, что вы используете таблицу базы данных posts_custom_fields. Однако плагин Discourse Solved отслеживает принятые решения в таблице discourse_solved_solved_topics.
С марта 2025 года было внесено изменение, обновившее плагин Discourse Solved: теперь для определения решённых тем на вашем сайте Discourse используется таблица базы данных discourse_solved_solved_topics. Эта таблица теперь является единственным источником истины для всех данных о решениях.
Ниже приведена исправленная версия вашего запроса, которая будет соответствовать отчёту «Принятые решения» и покажет данные за 2025 год.
Принятые решения по месяцам за 2025 год
SELECT
EXTRACT(YEAR FROM p.created_at) AS year,
EXTRACT(MONTH FROM p.created_at) AS month,
TO_CHAR(p.created_at, 'Month') AS month_name,
COUNT(DISTINCT dst.topic_id) AS solutions_count
FROM discourse_solved_solved_topics dst
JOIN posts p ON p.id = dst.answer_post_id
WHERE p.created_at >= '2025-01-01' AND p.created_at < '2026-01-01'
GROUP BY 1, 2, 3
ORDER BY year, month
Результаты этого запроса будут включать:
Все месяцы 2025 года, в которых были приняты решения (не только март)
Цифры, совпадающие с отчётом «Принятые решения», так как используется одна и та же таблица базы данных
Форматирование дат с использованием нативных функций PostgreSQL
Спасибо, @SaraDev! Это полезно. Я проверю результат этого запроса, как только смогу получить discourse_solved_solved_topics в Snowflake для выполнения запроса.