You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kibana Vega公式转换后页面空白,自定义字段无法识别求助

排查Vega中自定义转换字段不识别&页面空白的问题

哈哈,这个问题我之前在Kibana里用Vega可视化赛车赛道数据的时候也踩过坑!页面空白+自定义字段不识别,大概率是这几个地方出了问题,我帮你一步步拆解排查:

1. Transform的位置放错了(核心问题)

你现在把transform放在了顶层,但Vega的规则是:针对某个数据源的转换逻辑,必须嵌套在对应的data对象内部,而不是和data同级。顶层的transform是全局转换,不会作用到你从Elasticsearch拉取的数据源上。

修正写法:

data: [
  {
    name: "raceData", // 给数据源起个名字,方便后续引用
    url: {
      "%context%": true,
      index: "performance.capture.August.*",
      body: {
        size: 10000,
        _source: ["var_Track_X", "var_Track_Z", "var_Performance"]
      }
    },
    // Transform必须放在这个data对象内部
    transform: [
      {type: "formula", expr: "-1 * datum._source.var_Track_X", as: "var_Playercar_X_Flipped"}
    ]
  }
]

2. 字段引用的语法错误

你在encoding里写的field: var_Playercar_X_Flipped是没有加引号的,这会被Vega当成变量表达式,而不是字段名。Vega找不到这个变量,就会导致解析失败,页面直接空白。

修正写法:

encoding: {
  x: {
    field: "var_Playercar_X_Flipped", // 必须加引号!
    type: "quantitative",
    axis: { title: false }
  }
}

3. 字段路径是否正确?

你提到试过加_source.前缀,但可能没搞对实际的字段结构。Elasticsearch返回的数据在Vega里,字段是嵌套在_source对象下的,所以必须用datum._source.var_Track_X来引用,而不是直接datum.var_Track_X。

如果不确定字段路径,可以在transform里加一个debug转换,在浏览器控制台查看返回的datum结构:

transform: [
  {type: "debug", log: true}, // 开启后按F12看控制台输出
  {type: "formula", expr: "-1 * datum._source.var_Track_X", as: "var_Playercar_X_Flipped"}
]

4. 先确认Elasticsearch查询是否返回数据

页面空白也可能是因为你的查询根本没拿到数据!先去Kibana的Discover页面,用同样的performance.capture.August.*索引,搜索var_Track_X、var_Track_Z这些字段,确认有数据返回。如果查询结果为空,那可视化自然啥也显示不出来。


完整的可运行示例

把上面的修正点整合起来,完整的Vega spec应该是这样的:

{
  "$schema": "https://vega.github.io/schema/vega/v5.json",
  "width": 800,
  "height": 400,
  "data": [
    {
      "name": "raceData",
      "url": {
        "%context%": true,
        "index": "performance.capture.August.*",
        "body": {
          "size": 10000,
          "_source": ["var_Track_X", "var_Track_Z", "var_Performance"]
        }
      },
      "transform": [
        // {type: "debug", log: true}, // 调试用,可注释掉
        {
          "type": "formula",
          "expr": "-1 * datum._source.var_Track_X",
          "as": "var_Playercar_X_Flipped"
        }
      ]
    }
  ],
  "mark": "point", // 用点标记来展示数据,你可以换成line等其他类型
  "encoding": {
    "x": {
      "field": "var_Playercar_X_Flipped",
      "type": "quantitative",
      "axis": {"title": false}
    },
    "y": {
      "field": "_source.var_Track_Z",
      "type": "quantitative",
      "title": "Track Z Position"
    },
    "color": {
      "field": "_source.var_Performance",
      "type": "quantitative",
      "title": "Performance Metric"
    }
  }
}

内容的提问来源于stack exchange,提问作者Aaron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:11:26