Discourse では、Data Explorer のクエリ結果の外観を強化できます。
Data Explorer でテーブルの結果をフォーマットするには、SQL クエリで特別な構文を使用します。これにより、Discourse インターフェイス内で、データをより直感的で視覚的に魅力的な方法で表示できます。
フォーマットされたテーブル結果
クエリ結果をフォーマットするために使用できる構文とデータフィールドの概要を以下に示します。
SELECT
-- 引用、ユーザーのアバター/ユーザー名、投稿へのリンクを表示するには、次を使用します。
id AS post_id,
-- トピックのタイトル、投稿数、トピックへのリンクを表示するには、次を使用します。
topic_id,
-- 時間を相対形式で表示するには(ホバーすると完全な日付が表示されます)、次を使用します。
updated_at AS reltime$updated_at,
-- ユーザーのアバター/ユーザー名、アクティビティページへのリンクを表示するには、次を使用します。
user_id,
-- グループ名とグループへのリンクを表示するには、次を使用します。
(SELECT id FROM groups WHERE id = 12) AS group_id,
-- カテゴリバッジ、名前、カテゴリへのリンクを表示するには、次を使用します。
(SELECT id FROM categories WHERE id = 22) AS category_id,
-- バッジアイコン、名前、バッジへのリンクを表示するには、次を使用します。
(SELECT id FROM badges WHERE id = 2) AS badge_id,
-- 特別なフォーマットを抑制し、テキストのみを使用するには、次を使用します。
topic_id AS text$topic_id_text,
-- 値を HTML としてレンダリングするには、次を使用します。
'<h2>hello</h2>' AS html$html,
-- 列を URL として扱う(`xyz_url` という名前の場合)、リンク名を `name,https://example.com` の形式で名前を付けるには、次を使用します。
'Meta,https://meta.discourse.org' AS somecolumnname_url
FROM posts
WHERE topic_id = 32566
LIMIT 1
上記の構文を使用してフォーマットされた場合のクエリ結果の例を次に示します。
個別の例
これらの機能の一部を詳しく見ていきましょう。
投稿とトピックのリンク
AS post_id を使用して post_id を引用、ユーザーアバター/ユーザー名、投稿へのリンクとして表示できます。また、AS topic_id を使用して topic_id をトピックタイトル、投稿数、トピックへのリンクとして表示することもできます。
例:
SELECT
p.id AS post_id
FROM
posts p
SELECT
t.id AS topic_id
FROM
topics t
相対時間
AS reltime$updated_at ステートメントは、タイムスタンプを相対形式で表示します。この形式で表示されるタイムスタンプにカーソルを合わせると、完全な日付も表示されます。
例:
SELECT
id,
updated_at AS reltime$updated_at
FROM
posts
ORDER BY updated_at DESC
ユーザー、グループ、カテゴリ、バッジのリンク
AS user_id、AS group_id、AS category_id、AS badge_id を使用して、ユーザーアバター/ユーザー名、グループ名、カテゴリ名、バッジアイコン/名前を表示でき、すべてそれぞれのページにリンクされます。
例:
SELECT
u.id AS user_id
FROM
users u
SELECT
g.id AS group_id
FROM
groups g
SELECT
c.id AS category_id
FROM
categories c
SELECT
b.id as badge_id
FROM
badges b
テキストと HTML のレンダリング
AS html$html を使用して HTML 結果をレンダリングされた HTML として表示できます。また、AS text$column_name を使用して特別なフォーマットを抑制し、テキストのみを使用することもできます。
例:
SELECT
topic_id,
cooked AS html$html,
topic_id AS text$topic_id_text
FROM
posts
GROUP BY topic_id, cooked
URL のレンダリング
列名を xyz_url とすると、URL として扱われます。また、name,https://example.com の形式で URL リンクに名前を付けることもできます。
例:
SELECT
u.username,
'https://example_site.com/u/' || u.username || '/summary' AS profile_url,
'Profile Page,https://example_site.com/u/' || u.username || '/summary' AS profile_page_url
FROM
users u
WHERE u.username LIKE 'anon%'
自動フォーマット
Data Explorer には、自動的にフォーマットされる特定の SQL フィールドもあります。これらには以下が含まれます。
リンク
URL を含むフィールドは、クリック可能なリンクとして自動的にフォーマットされます。
例:
SELECT
id,
remote_url
FROM remote_themes
ID
ID(投稿 ID、トピック ID、ユーザー ID など)は、外部テーブルで参照される場合、多くの場合、それぞれのエンティティに自動的にリンクされます。
例:
SELECT
user_id
FROM
topics











