Redash 表格默认不渲染HTML,需改用Markdown可视化类型并确保SQL返回未转义的合法HTML或Markdown;字段值必须为<b>test</b>而非test,且仅支持<b><i><u><span>等白名单标签及color/background-color样式。

Redash 查询结果里直接写 <strong> 标签为什么没生效
Redash 默认对查询返回的字符串做 HTML 转义(即把 < 变成 ),所以即使你在 SQL 里拼出 <code><b>高亮</b>,页面上也只会显示字面量,不会渲染成加粗文本。这不是 bug,是安全默认行为。
常见错误现象:
– 查询返回字段值为 <span style="color:red">失败</span>,但 Redash 表格里原样显示这段文字
– 用 CONCAT('<i>', status, '</i>') 拼接,结果仍是纯文本
- Redash 不解析查询结果中的 HTML,除非显式启用渲染
- 仅对「文本」可视化类型(Text、Big Number、Markdown)支持有限 HTML;表格(Table)可视化默认禁用所有 HTML 渲染
- 即使切换到 Markdown 类型,
<div>、<script>、onerror等标签和属性仍会被过滤,只保留基础格式标签(<b>、<i>、<u>、<span>且仅限style中的color和background-color)
怎么让 Redash 表格单元格渲染 HTML(比如带颜色的状态)
必须绕过默认表格渲染,改用「Markdown」可视化类型,并在 SQL 中返回合法 Markdown 或受支持的内联 HTML。
- SQL 示例(PostgreSQL):
SELECT id, CASE status WHEN 'success' THEN '**✅ 成功**' WHEN 'failed' THEN '<span style="color:red">❌ 失败</span>' ELSE status END AS status_display FROM events; - 创建查询后,点击右上角「Visualization」→ 「+ New Visualization」→ 选择「Markdown」类型
- 在 Markdown 可视化编辑器中,绑定字段:把
status_display字段拖进「Content」框(不是「Value」) - 注意:
<span>必须写在单行内,不能换行;style中只认color和background-color,写font-weight无效
为什么用了 Markdown 可视化还是显示源码
最常见原因是字段内容被自动转义了——Redash 的 Markdown 渲染器会二次处理,如果字段本身已含转义字符(如 <b></b>),就无法还原。
立即学习“前端免费学习笔记(深入)”;
- 检查原始查询结果:在 Redash 查询页面点「JSON」标签,看
status_display字段值是否为"<b>test</b>"(含)而不是 <code>"<b>test</b>" - PostgreSQL 中避免转义:不要用
to_json()或row_to_json()包裹该字段;MySQL 用CAST(... AS CHAR)替代JSON_OBJECT() - 如果数据来自 JSON 列,用
->>'field'(返回 text)而非->'field'(返回 json,会触发额外转义)
想在 Big Number 里加 HTML 图标或颜色怎么办
Big Number 可视化支持极简 HTML,但只作用于「Value」字段,且不支持 <span> style,只能靠 Unicode 符号 + 内置颜色配置。
- SQL 返回纯文本值,例如:
'⚠️ 降级中'或'? 在线' - 创建 Big Number 可视化后,在设置里找到「Value Color」→ 选「Based on value」→ 添加规则,如
value contains "?"→ 设为绿色 - 如果硬要内联样式,唯一可行路径是:用 Markdown 可视化模拟 Big Number 布局(居中、大字号),通过
<div style="font-size:48px"><span style="color:green">?</span> 在线</div>实现,但需手动调字体大小和对齐
<span> 都能活下来,也不是换个可视化类型就自动解禁。真正起作用的是「字段原始字符串未被转义」+「可视化类型明确支持」+「HTML 片段在白名单内」三者同时满足。漏掉任一环,看到的都是源码。



















