承認済みソリューションの質問

こんにちは、今月の承認済みソリューションを確認するために、以下のクエリを使用しています。しかし、3月以降のデータが表示されません。さらに、これらの数値は「承認済みソリューションレポート」に表示されているものと一致しません。何か間違っている点について、何かアドバイスをいただけますでしょうか?

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

Shreyas様

共有いただいたクエリを確認したところ、3月以降のデータが表示されず、クエリの数値が「Accepted Solutions Dashboard Report」(https://meta.discourse.org/t/dashboard-report-accepted-solutions/288863)と一致しない理由は、`posts_custom_fields`データベーステーブルを使用しているためです。しかし、Discourse Solvedプラグインは、解決済みのトピックをdiscourse_solved_solved_topicsテーブルで追跡しています。

2025年3月以降、Discourse Solvedプラグインが解決済みのトピックを判断するためにdiscourse_solved_solved_topicsデータベーステーブルを使用するように更新する変更が行われました。このテーブルが、すべての解決済みデータの真の情報源となっています。

以下は、Accepted Solutions Reportと一致し、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年のすべての月(3月だけでなく)
  • Accepted Solutions Reportと一致する数値(同じ基盤となるデータベーステーブルを使用しているため)
  • PostgreSQLのネイティブ関数を使用した日付フォーマット

お探しのデータが見つかることを願っています!:slightly_smiling_face:

「いいね!」 2

@SaraDevさん、ありがとうございます!参考になります。Snowflakeでdiscourse_solved_solved_topicsを取得してクエリを実行できるようになり次第、このクエリの出力を確認します。