Join by field 是什么
Join by field 是 Grafana 的转换之一,按公共列把多个查询结果横向拼到同一张表里,最常用的公共列是 Time。它能让指标统计与日志统计、不同数据源的序列出现在一张表上便于对照,也减少为对齐时间而手工导出的步骤。
关键参数
| byField | 分列依据,通常选 Time;选错会得到大量空行 |
|---|---|
| mode | 连接方式,inner 会丢掉只在一侧存在的时间点 |
| 前置转换 | 先用 Organize fields 统一字段名,结果列更干净 |
| 数据范围 | 同一面板内的多个查询,跨数据源也能拼接 |
转换配置
转换配置
{"id": "joinByField",
"options": {"byField": "Time", "mode": "outer"}}转换执行顺序
转换执行顺序
1 Organize fields:统一字段名,避免重名加后缀
2 Join by field:按 Time 把多个查询横向拼接
3 Filter data by query:需要时只保留指定查询的结果
4 表格面板查看结果;转换从上到下依次执行典型使用场景
- 同表对照指标与日志统计,例如错误率与错误条数并排看
- 把来自不同数据源的序列按时间对齐比较趋势
- 为报表拼接多组查询结果,减少人工汇总步骤
- 把两条相关曲线合成一张表做差值分析
字段命名差异先用 Organize fields 统一,再执行 Join,结果列会更干净,后续引用字段也不容易出错。
join 后的结果行数可能远大于单个查询,时间点密集时表格会变得很宽,注意面板渲染性能与可读性。多个查询的时间点不完全重合时,空值列会明显增多,这是外层连接的正常表现。
排查要点
- 结果出现成对空行通常是时间精度不一致,先对齐各查询的 interval
- 列名带 _1、_2 后缀说明字段重名,用 Organize fields 显式重命名
- 某列整片为空说明该查询没有返回数据,先用查询检查器单独验证
- 上表前先用表格面板逐列核对,确认拼接键与取值都符合预期
- 只有单一时间点数据时先改成表格视图,图形面板会把拼接结果画得难以解读