Skip to content

Commit 0688405

Browse files
authored
fix: log query (#32)
* fix: log query with labels * fix: none configed columns * refactor: log hint
1 parent 495c221 commit 0688405

File tree

2 files changed

+37
-54
lines changed

2 files changed

+37
-54
lines changed

src/components/queryBuilder/views/LogsQueryBuilder.tsx

Lines changed: 10 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -136,21 +136,8 @@ export const LogsQueryBuilder = (props: LogsQueryBuilderProps) => {
136136
label={labels.logTimeColumn.label}
137137
tooltip={labels.logTimeColumn.tooltip}
138138
/>
139-
<ColumnSelect
140-
disabled={builderState.otelEnabled}
141-
allColumns={allColumns}
142-
selectedColumn={builderState.logLevelColumn}
143-
invalid={!builderState.logLevelColumn}
144-
onColumnChange={onOptionChange('logLevelColumn')}
145-
columnFilterFn={columnFilterString}
146-
columnHint={ColumnHint.LogLevel}
147-
label={labels.logLevelColumn.label}
148-
tooltip={labels.logLevelColumn.tooltip}
149-
inline
150-
/>
151-
</div>
152-
<div className="gf-form">
153-
<ColumnSelect
139+
140+
<ColumnSelect
154141
disabled={builderState.otelEnabled}
155142
allColumns={allColumns}
156143
selectedColumn={builderState.messageColumn}
@@ -164,22 +151,17 @@ export const LogsQueryBuilder = (props: LogsQueryBuilderProps) => {
164151
<ColumnSelect
165152
disabled={builderState.otelEnabled}
166153
allColumns={allColumns}
167-
selectedColumn={builderState.labelsColumn}
168-
invalid={!builderState.labelsColumn}
169-
onColumnChange={onOptionChange('labelsColumn')}
170-
columnHint={ColumnHint.LogLabels}
171-
label={labels.logLabelsColumn.label}
172-
tooltip={labels.logLabelsColumn.tooltip}
154+
selectedColumn={builderState.logLevelColumn}
155+
invalid={!builderState.logLevelColumn}
156+
onColumnChange={onOptionChange('logLevelColumn')}
157+
columnFilterFn={columnFilterString}
158+
columnHint={ColumnHint.LogLevel}
159+
label={labels.logLevelColumn.label}
160+
tooltip={labels.logLevelColumn.tooltip}
173161
inline
174162
/>
175-
{/* <Switch
176-
value={builderState.liveView}
177-
onChange={onOptionChange('liveView')}
178-
label={labels.liveView.label}
179-
tooltip={labels.liveView.tooltip}
180-
inline
181-
/> */}
182163
</div>
164+
183165
<OrderByEditor
184166
orderByOptions={getOrderByOptions(builderOptions, allColumns)}
185167
orderBy={builderState.orderBy}

src/greptimedb/index.ts

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
} from '@grafana/data';
99

1010
import { GreptimeDataTypes } from './types';
11-
import { getColumnsByHint } from 'data/sqlGenerator';
11+
import { getColumnsByHint, logColumnHintsToAlias } from 'data/sqlGenerator';
1212
import { ColumnHint, QueryBuilderOptions } from 'types/queryBuilder';
1313
import { CHQuery } from 'types/sql';
1414

@@ -272,28 +272,25 @@ export function transformGreptimeDBLogs(sqlResponse: GreptimeResponse, query: CH
272272
const labelColumnIndices: Record<string, number> = {};
273273
const contextColumnIndices: Record<string, number> = {};
274274

275-
columnSchemas.forEach((schema, index) => {
276-
const lowerCaseName = schema.name.toLowerCase();
277-
if (lowerCaseName === 'ts' || lowerCaseName === 'timestamp') {
278-
timestampColumnIndex = index;
279-
} else if (lowerCaseName === 'body' || lowerCaseName === 'message') {
280-
bodyColumnIndex = index;
281-
} else if (lowerCaseName === 'severity' || lowerCaseName === 'level') {
282-
severityColumnIndex = index;
283-
} else if (lowerCaseName === 'id') {
284-
idColumnIndex = index;
285-
} else if (contextColumns.includes(schema.name)) {
286-
contextColumnIndices[schema.name] = index;
287-
} else {
288-
// Consider other columns as potential labels
289-
labelColumnIndices[schema.name] = index;
290-
}
291-
});
292-
293-
// if (timestampColumnIndex === -1 || bodyColumnIndex === -1) {
294-
// console.error('Timestamp or body column not found in GreptimeDB response.');
295-
// return null;
296-
// }
275+
276+
if('builderOptions' in query) {
277+
278+
columnSchemas.forEach((schema, index) => {
279+
const lowerCaseName = schema.name.toLowerCase();
280+
if (lowerCaseName === logColumnHintsToAlias.get(ColumnHint.Time)) {
281+
timestampColumnIndex = index;
282+
} else if (lowerCaseName === logColumnHintsToAlias.get(ColumnHint.LogMessage)) {
283+
bodyColumnIndex = index;
284+
} else if (lowerCaseName === logColumnHintsToAlias.get(ColumnHint.LogLevel)) {
285+
severityColumnIndex = index;
286+
} else if (contextColumns.includes(schema.name)) {
287+
contextColumnIndices[schema.name] = index;
288+
} else {
289+
// Consider other columns as potential labels
290+
labelColumnIndices[schema.name] = index;
291+
}
292+
});
293+
}
297294

298295
const timestamps: number[] = [];
299296
const bodies: string[] = [];
@@ -309,9 +306,13 @@ export function transformGreptimeDBLogs(sqlResponse: GreptimeResponse, query: CH
309306
? new Date(timestampValue).getTime()
310307
: timestampValue
311308
);
312-
bodies.push(String(row[bodyColumnIndex]));
313-
severities.push(severityColumnIndex !== -1 ? String(row[severityColumnIndex]) : '');
314-
ids.push(idColumnIndex !== -1 ? String(row[idColumnIndex]) : '');
309+
if (bodyColumnIndex !== -1) {
310+
bodies.push(String(row[bodyColumnIndex]));
311+
}
312+
if (severityColumnIndex !== -1) {
313+
severities.push(String(row[severityColumnIndex]));
314+
}
315+
315316

316317
const labels: Record<string, any> = {};
317318
for (const labelName in labelColumnIndices) {

0 commit comments

Comments
 (0)