mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
DataFrame: move labels to field (#19926)
This commit is contained in:
@@ -530,7 +530,6 @@ export class ElasticResponse {
|
||||
|
||||
for (let y = 0; y < tmpSeriesList.length; y++) {
|
||||
const series = toDataFrame(tmpSeriesList[y]);
|
||||
series.labels = {};
|
||||
dataFrame.push(series);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -410,7 +410,12 @@ export class LokiDatasource extends DataSourceApi<LokiQuery, LokiOptions> {
|
||||
const annotations: AnnotationEvent[] = [];
|
||||
|
||||
for (const frame of data) {
|
||||
const tags = Object.values(frame.labels) as string[];
|
||||
const tags: string[] = [];
|
||||
for (const field of frame.fields) {
|
||||
if (field.labels) {
|
||||
tags.push.apply(tags, Object.values(field.labels));
|
||||
}
|
||||
}
|
||||
const view = new DataFrameView<{ ts: string; line: string }>(frame);
|
||||
|
||||
view.forEachRow(row => {
|
||||
|
||||
@@ -42,7 +42,7 @@ describe('Live Stream Tests', () => {
|
||||
const tests = [
|
||||
(val: DataFrame[]) => {
|
||||
expect(val[0].length).toEqual(7);
|
||||
expect(val[0].labels).toEqual(labels);
|
||||
expect(val[0].fields[1].labels).toEqual(labels);
|
||||
},
|
||||
(val: DataFrame[]) => {
|
||||
expect(val[0].length).toEqual(8);
|
||||
|
||||
@@ -27,10 +27,9 @@ export class LiveStreams {
|
||||
let stream = this.streams[target.url];
|
||||
if (!stream) {
|
||||
const data = new CircularDataFrame({ capacity: target.size });
|
||||
data.labels = parseLabels(target.query);
|
||||
data.addField({ name: 'ts', type: FieldType.time, config: { title: 'Time' } });
|
||||
data.addField({ name: 'line', type: FieldType.string });
|
||||
data.addField({ name: 'labels', type: FieldType.other });
|
||||
data.addField({ name: 'line', type: FieldType.string }).labels = parseLabels(target.query);
|
||||
data.addField({ name: 'labels', type: FieldType.other }); // The labels for each line
|
||||
data.addField({ name: 'id', type: FieldType.string });
|
||||
|
||||
stream = webSocket(target.url).pipe(
|
||||
|
||||
@@ -28,7 +28,7 @@ describe('logStreamToDataFrame', () => {
|
||||
const data = streams.map(stream => logStreamToDataFrame(stream));
|
||||
|
||||
expect(data.length).toBe(2);
|
||||
expect(data[0].labels['foo']).toEqual('bar');
|
||||
expect(data[0].fields[1].labels['foo']).toEqual('bar');
|
||||
expect(data[0].fields[0].values.get(0)).toEqual(streams[0].entries[0].ts);
|
||||
expect(data[0].fields[1].values.get(0)).toEqual(streams[0].entries[0].line);
|
||||
expect(data[0].fields[2].values.get(0)).toEqual('1970-01-01T00:00:00Z_{foo="bar"}');
|
||||
|
||||
@@ -35,10 +35,9 @@ export function logStreamToDataFrame(stream: LokiLogsStream, reverse?: boolean,
|
||||
|
||||
return {
|
||||
refId,
|
||||
labels,
|
||||
fields: [
|
||||
{ name: 'ts', type: FieldType.time, config: { title: 'Time' }, values: times }, // Time
|
||||
{ name: 'line', type: FieldType.string, config: {}, values: lines }, // Line
|
||||
{ name: 'line', type: FieldType.string, config: {}, values: lines, labels }, // Line
|
||||
{ name: 'id', type: FieldType.string, config: {}, values: uids },
|
||||
],
|
||||
length: times.length,
|
||||
@@ -57,18 +56,29 @@ export function appendResponseToBufferedData(response: LokiResponse, data: Mutab
|
||||
|
||||
const streams: LokiLogsStream[] = response.streams;
|
||||
if (streams && streams.length) {
|
||||
const { values } = data;
|
||||
let baseLabels: Labels = {};
|
||||
for (const f of data.fields) {
|
||||
if (f.type === FieldType.string) {
|
||||
if (f.labels) {
|
||||
baseLabels = f.labels;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (const stream of streams) {
|
||||
// Find unique labels
|
||||
const labels = parseLabels(stream.labels);
|
||||
const unique = findUniqueLabels(labels, data.labels || {});
|
||||
const unique = findUniqueLabels(labels, baseLabels);
|
||||
|
||||
// Add each line
|
||||
for (const entry of stream.entries) {
|
||||
const ts = entry.ts || entry.timestamp;
|
||||
data.values.ts.add(ts);
|
||||
data.values.line.add(entry.line);
|
||||
data.values.labels.add(unique);
|
||||
data.values.id.add(`${ts}_${stream.labels}`);
|
||||
values.ts.add(ts);
|
||||
values.line.add(entry.line);
|
||||
values.labels.add(unique);
|
||||
values.id.add(`${ts}_${stream.labels}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user