Data Explorer テーブル結果の書式設定

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_idAS group_idAS category_idAS 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

このシリーズのその他のトピック

「いいね!」 11