Grafana 参考数据集变量以使用 Postgres 驱动程序转换图例值
Grafana Reference DataSet Variable to Translate Legend Values using Postgres Driver
我在 Grafana 中有一个规范化的 postgres 数据源,它限制我的图形可视化图例仅显示我记录的 ID(哈希)。我想让它易于阅读,但 id -> name 映射位于不同的 datasource/postgres 数据库中。
Grafana 支持模板变量,我认为这可以让我加载我的 id -> 命名参考数据,但没有关于如何访问 label_values 作为参考的明确文档-table 在 postgres 驱动程序的查询编辑器中。
有没有办法配置模板变量以加载参考数据(id -> 名称)并利用它在 grafana postgres 驱动程序中转换我的 metric/legend 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
我意识到 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 数据源,它限制我的图形可视化图例仅显示我记录的 ID(哈希)。我想让它易于阅读,但 id -> name 映射位于不同的 datasource/postgres 数据库中。
Grafana 支持模板变量,我认为这可以让我加载我的 id -> 命名参考数据,但没有关于如何访问 label_values 作为参考的明确文档-table 在 postgres 驱动程序的查询编辑器中。
有没有办法配置模板变量以加载参考数据(id -> 名称)并利用它在 grafana postgres 驱动程序中转换我的 metric/legend 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
我意识到 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)