В 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











