Форматирование результатов таблицы 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

Ниже приведен пример того, как могут выглядеть результаты вашего запроса после форматирования с использованием указанного выше синтаксиса:

Отдельные примеры

Давайте рассмотрим некоторые из этих функций подробнее:

Ссылки на посты и темы

Вы можете отображать post_id как цитату, аватар/имя пользователя и ссылку на пост, используя AS post_id. Вы также можете отображать topic_id как заголовок темы, количество постов и ссылку на тему, используя AS 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

Вы можете отображать результаты HTML как отрендеренный HTML, используя AS 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. Вы также можете задать имя ссылки на URL в формате name,https://example.com.

Пример:

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 лайков