首页/云/可观测性速查/Join by field:横向拼接多查询
Grafana 与看板53 条

Join by field:横向拼接多查询

按公共列(典型是 Time)把多个查询的结果拼到同一张表:指标与日志统计、不同数据源的序列都能合并,便于同表对照。

可观测性速查云更新于 2026-10-13

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 显式重命名
  • 某列整片为空说明该查询没有返回数据,先用查询检查器单独验证
  • 上表前先用表格面板逐列核对,确认拼接键与取值都符合预期
  • 只有单一时间点数据时先改成表格视图,图形面板会把拼接结果画得难以解读

易错点

  • 时间精度不一致(秒与毫秒)会让行数翻倍且空值增多,先统一查询间隔
  • 字段重名时 Join 会加后缀,后续引用字段名要带上后缀
  • 转换顺序颠倒(先 Join 后统一字段名)会让拼接失败或结果错位
  • 对连接方式理解不清,inner 模式把只在一侧存在的异常时间点丢掉

数据来源与参考

  • Grafana 官方文档 · Join by field
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌