ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Echart中获取InfluDB数据

Echart中获取InfluDB数据 环境grafana 8.2.7 influxDB1.Xecharts 2.2.4// 工具函数 console.log( 完整 Grafana 数据结构 , data); //console.log( 数据系列列表 , data.series); //console.log( 查询状态 , data.state); //console.log( 数据系列数量 , data.series.length); /** * 按refId查找数据系列 * param {Object|null|undefined} data - 根数据对象 * param {string} refId - 查询ID如A、B、C * returns {Object|null} 数据系列对象 */ function getSeriesByRefId(data, refId) { // 安全校验根对象不存在 / series不是数组 直接返回null if (!data || !Array.isArray(data.series)) { return null; } return data.series.find(s s.refId refId) ?? null; } /** * 从Grafana数据系列中提取指定名称字段的buffer数组 * param {Object|null|undefined} series - 单个数据系列对象 * param {string} fieldName - 字段名称如Time、Value * returns {Array} field.values.buffer 原始数组无数据返回[] */ function getFieldValues(series, fieldName) { // 校验series和fields数组 if (!series || !Array.isArray(series.fields)) { return []; } const field series.fields.find(f f.name fieldName); // 逐层判空字段存在 → values存在 → 有buffer则返回否则空数组 if (!field || !field.values || field.values.buffer null) { return []; } return field.values.buffer; }; // 数据提取 const pvSeries getSeriesByRefId(data, A); const recipeSeries getSeriesByRefId(data, B); //console.log( pvSeries , pvSeries); //console.log( recipeSeries , recipeSeries); // 注意修改指定的字段名称 如Value/valueFloat/valueString等 const pvTimes getFieldValues(pvSeries, Time); const pvValues getFieldValues(pvSeries, Value); const recipeTimes getFieldValues(recipeSeries, Time); const recipeValues getFieldValues(recipeSeries, Value);
返回列表