mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Loki: Add missing functions to query builder (#47333)
This commit is contained in:
@@ -18,6 +18,9 @@ export function getOperationDefinitions(): QueryBuilderOperationDef[] {
|
||||
LokiOperationId.Avg,
|
||||
LokiOperationId.TopK,
|
||||
LokiOperationId.BottomK,
|
||||
LokiOperationId.Stddev,
|
||||
LokiOperationId.Stdvar,
|
||||
LokiOperationId.Count,
|
||||
].flatMap((opId) =>
|
||||
createAggregationOperation(opId, {
|
||||
addOperationHandler: addLokiOperation,
|
||||
@@ -32,6 +35,14 @@ export function getOperationDefinitions(): QueryBuilderOperationDef[] {
|
||||
createRangeOperation(LokiOperationId.BytesRate),
|
||||
createRangeOperation(LokiOperationId.BytesOverTime),
|
||||
createRangeOperation(LokiOperationId.AbsentOverTime),
|
||||
createRangeOperation(LokiOperationId.AvgOverTime),
|
||||
createRangeOperation(LokiOperationId.MaxOverTime),
|
||||
createRangeOperation(LokiOperationId.MinOverTime),
|
||||
createRangeOperation(LokiOperationId.FirstOverTime),
|
||||
createRangeOperation(LokiOperationId.LastOverTime),
|
||||
createRangeOperation(LokiOperationId.StdvarOverTime),
|
||||
createRangeOperation(LokiOperationId.StddevOverTime),
|
||||
createRangeOperation(LokiOperationId.QuantileOverTime),
|
||||
...aggregations,
|
||||
{
|
||||
id: LokiOperationId.Json,
|
||||
@@ -303,15 +314,28 @@ export function getOperationDefinitions(): QueryBuilderOperationDef[] {
|
||||
}
|
||||
|
||||
function createRangeOperation(name: string): QueryBuilderOperationDef {
|
||||
const params = [getRangeVectorParamDef()];
|
||||
const defaultParams = ['$__interval'];
|
||||
let renderer = operationWithRangeVectorRenderer;
|
||||
|
||||
if (name === LokiOperationId.QuantileOverTime) {
|
||||
defaultParams.push('0.95');
|
||||
params.push({
|
||||
name: 'Quantile',
|
||||
type: 'number',
|
||||
});
|
||||
renderer = operationWithRangeVectorRendererAndParam;
|
||||
}
|
||||
|
||||
return {
|
||||
id: name,
|
||||
name: getPromAndLokiOperationDisplayName(name),
|
||||
params: [getRangeVectorParamDef()],
|
||||
defaultParams: ['$__interval'],
|
||||
params,
|
||||
defaultParams,
|
||||
alternativesKey: 'range function',
|
||||
category: LokiVisualQueryOperationCategory.RangeFunctions,
|
||||
orderRank: LokiOperationOrder.RangeVectorFunction,
|
||||
renderer: operationWithRangeVectorRenderer,
|
||||
renderer,
|
||||
addOperationHandler: addLokiOperation,
|
||||
explainHandler: (op, def) => {
|
||||
let opDocs = FUNCTIONS.find((x) => x.insertText === op.id)?.documentation ?? '';
|
||||
@@ -342,6 +366,17 @@ function operationWithRangeVectorRenderer(
|
||||
return `${def.id}(${innerExpr} [${rangeVector}])`;
|
||||
}
|
||||
|
||||
function operationWithRangeVectorRendererAndParam(
|
||||
model: QueryBuilderOperation,
|
||||
def: QueryBuilderOperationDef,
|
||||
innerExpr: string
|
||||
) {
|
||||
const params = model.params ?? [];
|
||||
const rangeVector = params[0] ?? '$__interval';
|
||||
const param = params[1];
|
||||
return `${def.id}(${param}, ${innerExpr} [${rangeVector}])`;
|
||||
}
|
||||
|
||||
function getLineFilterRenderer(operation: string) {
|
||||
return function lineFilterRenderer(model: QueryBuilderOperation, def: QueryBuilderOperationDef, innerExpr: string) {
|
||||
if (model.params[0] === '') {
|
||||
|
||||
@@ -38,6 +38,14 @@ export enum LokiOperationId {
|
||||
Rate = 'rate',
|
||||
CountOverTime = 'count_over_time',
|
||||
SumOverTime = 'sum_over_time',
|
||||
AvgOverTime = 'avg_over_time',
|
||||
MaxOverTime = 'max_over_time',
|
||||
MinOverTime = 'min_over_time',
|
||||
FirstOverTime = 'first_over_time',
|
||||
LastOverTime = 'last_over_time',
|
||||
StdvarOverTime = 'stdvar_over_time',
|
||||
StddevOverTime = 'stddev_over_time',
|
||||
QuantileOverTime = 'quantile_over_time',
|
||||
BytesRate = 'bytes_rate',
|
||||
BytesOverTime = 'bytes_over_time',
|
||||
AbsentOverTime = 'absent_over_time',
|
||||
@@ -45,6 +53,9 @@ export enum LokiOperationId {
|
||||
Avg = 'avg',
|
||||
Min = 'min',
|
||||
Max = 'max',
|
||||
Stddev = 'stddev',
|
||||
Stdvar = 'stdvar',
|
||||
Count = 'count',
|
||||
TopK = 'topk',
|
||||
BottomK = 'bottomk',
|
||||
LineContains = '__line_contains',
|
||||
|
||||
Reference in New Issue
Block a user