カテゴリでのユーザー投稿コードブロック

他の社内チームから特定の情報を検索する要件が時々あります。このクエリは、必要なものを見つけるのに役立ちました。

-- [params]
-- user_id :user
-- int_list :category_ids = 0

SELECT
    p.id AS post_id,
    p.raw,
    p.created_at,
    p.topic_id
FROM posts p
WHERE p.user_id = :user
  AND p.topic_id IN (
    SELECT t.id
    FROM topics t
    WHERE (':category_ids' = 0 OR t.category_id IN (:category_ids))
      AND t.archetype <> 'private_message'
      )
  AND p.raw LIKE '%```%'
「いいね!」 5

データをエクスポートしているかどうかわかりませんが、データエクスプローラー内で使用している場合は、ユーザーベースのルックアップに私がよく利用する便利なトリックの1つは、user_id パラメーターです。これにより、非常に簡単なルックアップ入力ボックスが提供されます。

-- [params]
-- user_id :user
-- int_list :category_ids = 0

SELECT 
    p.id AS post_id,
    p.raw, 
    p.created_at, 
    p.topic_id  
FROM posts p
WHERE p.user_id = :user
  AND p.topic_id IN (
    SELECT t.id
    FROM topics t
    WHERE (':category_ids' = 0 OR t.category_id IN (:category_ids))
      AND t.archetype <> 'private_message'
      )
  AND p.raw LIKE '%```%'

このバリエーションには、p.id を画面上の結果で利用可能なリンクに変換するための AS post_id マジックも含まれており、カテゴリーパラメーターも、すべてまたは複数のカテゴリーを許可するように拡張されています(すべては 0、複数またはコンマ区切りのリストは 4, 5, 6 など)。

これは比較的迅速なようですが、キーワード検索の代替方法に関するヒントもあります。

「いいね!」 4
  1. そのユーザーIDセレクターは素晴らしいですね!
  2. カテゴリ用のセレクターもありますか?

これで元のクエリを更新しました!実際にDiscourse AIのSQLビルダーを使ってこれを達成しました。これは信じられないほどの経験であり、毎週おそらく4〜5時間を節約してくれました。

「いいね!」 3

必要であれば、複数ユーザーを扱いたい場合、ユーザーリスト版に拡張することも可能です。例:

-- [params]
-- user_list :users

SELECT
    id AS user_id,
    created_at
FROM users
WHERE id IN (:users)

その他のマジックパラメータに関する情報は、こちらで確認できます - Utilizing Parameters in Data Explorer Queries

category_id および group_id パラメータもありますが、これらは user_id のように選択ボックスが表示されるほど洗練されていません(名前を入力すると自動的にIDに変換されます)。しかし、それでも非常に便利です。

(また、AI支援クエリの精度向上に役立つ、一般的に役立つ情報はこちらでも確認できます:https://meta.discourse.org/t/common-discourse-data-tips/276148)

「いいね!」 1