Grafana 引用数据集变量以使用 Postgres 驱动程序转换图例值
Posted
技术标签:
【中文标题】Grafana 引用数据集变量以使用 Postgres 驱动程序转换图例值【英文标题】:Grafana Reference DataSet Variable to Translate Legend Values using Postgres Driver 【发布时间】:2020-08-05 22:59:36 【问题描述】:我在 Grafana 中有一个经过规范化的 postgres 数据源,这将我的图形可视化图例限制为仅显示我的记录的 ID(哈希)。我想让这个人类可读,但 id -> 名称映射位于不同的数据源/postgres 数据库中。
Grafana 支持模板变量,我认为这可以让我加载我的 id -> 命名参考数据,但没有关于如何在 postgres 驱动程序的查询编辑器中将 label_values 作为参考表访问的明确文档。
有没有办法配置模板变量以加载参考数据(id -> 名称)并利用它在 grafana postgres 驱动程序中转换我的指标/图例 ID?
例如(伪grafana postgres 查询编辑器):
SELECT
$__timeGroupAlias(start,$__interval),
animal_names.__value AS metric,
count(dog.chewed_bones) AS “# bones chewed“
FROM animals.dog dog
JOIN $TEMPLATE_VAR_REF_DATA animal_names ON dog.id = animal_names.__text
WHERE $__timeFilter(start_time)
GROUP BY 1,2
ORDER BY 1,2
我找到的最接近的答案在这里,但没有详细说明: johnymachine 的评论@https://github.com/grafana/grafana/issues/1032
【问题讨论】:
【参考方案1】:我意识到 github 评论意味着使用 jsonb 聚合函数作为变量,如下面的解决方案:
仪表板变量(类型查询):select jsonb_object_agg(id,name) from animal_names;
Grafana Postgres 伪查询:
SELECT
$__timeGroupAlias(start,$__interval),
animal_names::jsonb ->> dog.id::text AS metric,
count(dog.chewed_bones) AS “# bones chewed“
FROM animals.dog
WHERE $__timeFilter(start_time)
【讨论】:
以上是关于Grafana 引用数据集变量以使用 Postgres 驱动程序转换图例值的主要内容,如果未能解决你的问题,请参考以下文章
Grafana 变量引用 prometheus 统计名称的一部分
Grafana/InfluxDB:查询在面板中工作,而不是在变量中