{
  "comment" : "This is generated by ESQL's AbstractFunctionTestCase. Do not edit it. See ../README.md for how to regenerate it.",
  "type" : "scalar",
  "name" : "clamp",
  "description" : "Limits (or clamps) the values of all samples to have a lower limit of min and an upper limit of max.",
  "signatures" : [
    {
      "params" : [
        {
          "name" : "field",
          "type" : "boolean",
          "optional" : false,
          "description" : "Numeric expression. If `null`, the function returns `null`."
        },
        {
          "name" : "min",
          "type" : "boolean",
          "optional" : false,
          "description" : "The min value to clamp data into."
        },
        {
          "name" : "max",
          "type" : "boolean",
          "optional" : false,
          "description" : "The max value to clamp data into."
        }
      ],
      "variadic" : false,
      "returnType" : "boolean"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "date",
          "optional" : false,
          "description" : "Numeric expression. If `null`, the function returns `null`."
        },
        {
          "name" : "min",
          "type" : "date",
          "optional" : false,
          "description" : "The min value to clamp data into."
        },
        {
          "name" : "max",
          "type" : "date",
          "optional" : false,
          "description" : "The max value to clamp data into."
        }
      ],
      "variadic" : false,
      "returnType" : "date"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "double",
          "optional" : false,
          "description" : "Numeric expression. If `null`, the function returns `null`."
        },
        {
          "name" : "min",
          "type" : "double",
          "optional" : false,
          "description" : "The min value to clamp data into."
        },
        {
          "name" : "max",
          "type" : "double",
          "optional" : false,
          "description" : "The max value to clamp data into."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "double",
          "optional" : false,
          "description" : "Numeric expression. If `null`, the function returns `null`."
        },
        {
          "name" : "min",
          "type" : "integer",
          "optional" : false,
          "description" : "The min value to clamp data into."
        },
        {
          "name" : "max",
          "type" : "integer",
          "optional" : false,
          "description" : "The max value to clamp data into."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "double",
          "optional" : false,
          "description" : "Numeric expression. If `null`, the function returns `null`."
        },
        {
          "name" : "min",
          "type" : "long",
          "optional" : false,
          "description" : "The min value to clamp data into."
        },
        {
          "name" : "max",
          "type" : "long",
          "optional" : false,
          "description" : "The max value to clamp data into."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "double",
          "optional" : false,
          "description" : "Numeric expression. If `null`, the function returns `null`."
        },
        {
          "name" : "min",
          "type" : "unsigned_long",
          "optional" : false,
          "description" : "The min value to clamp data into."
        },
        {
          "name" : "max",
          "type" : "unsigned_long",
          "optional" : false,
          "description" : "The max value to clamp data into."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "integer",
          "optional" : false,
          "description" : "Numeric expression. If `null`, the function returns `null`."
        },
        {
          "name" : "min",
          "type" : "double",
          "optional" : false,
          "description" : "The min value to clamp data into."
        },
        {
          "name" : "max",
          "type" : "double",
          "optional" : false,
          "description" : "The max value to clamp data into."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "integer",
          "optional" : false,
          "description" : "Numeric expression. If `null`, the function returns `null`."
        },
        {
          "name" : "min",
          "type" : "integer",
          "optional" : false,
          "description" : "The min value to clamp data into."
        },
        {
          "name" : "max",
          "type" : "integer",
          "optional" : false,
          "description" : "The max value to clamp data into."
        }
      ],
      "variadic" : false,
      "returnType" : "integer"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "integer",
          "optional" : false,
          "description" : "Numeric expression. If `null`, the function returns `null`."
        },
        {
          "name" : "min",
          "type" : "long",
          "optional" : false,
          "description" : "The min value to clamp data into."
        },
        {
          "name" : "max",
          "type" : "long",
          "optional" : false,
          "description" : "The max value to clamp data into."
        }
      ],
      "variadic" : false,
      "returnType" : "long"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "integer",
          "optional" : false,
          "description" : "Numeric expression. If `null`, the function returns `null`."
        },
        {
          "name" : "min",
          "type" : "unsigned_long",
          "optional" : false,
          "description" : "The min value to clamp data into."
        },
        {
          "name" : "max",
          "type" : "unsigned_long",
          "optional" : false,
          "description" : "The max value to clamp data into."
        }
      ],
      "variadic" : false,
      "returnType" : "unsigned_long"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "ip",
          "optional" : false,
          "description" : "Numeric expression. If `null`, the function returns `null`."
        },
        {
          "name" : "min",
          "type" : "ip",
          "optional" : false,
          "description" : "The min value to clamp data into."
        },
        {
          "name" : "max",
          "type" : "ip",
          "optional" : false,
          "description" : "The max value to clamp data into."
        }
      ],
      "variadic" : false,
      "returnType" : "ip"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "keyword",
          "optional" : false,
          "description" : "Numeric expression. If `null`, the function returns `null`."
        },
        {
          "name" : "min",
          "type" : "keyword",
          "optional" : false,
          "description" : "The min value to clamp data into."
        },
        {
          "name" : "max",
          "type" : "keyword",
          "optional" : false,
          "description" : "The max value to clamp data into."
        }
      ],
      "variadic" : false,
      "returnType" : "keyword"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "long",
          "optional" : false,
          "description" : "Numeric expression. If `null`, the function returns `null`."
        },
        {
          "name" : "min",
          "type" : "double",
          "optional" : false,
          "description" : "The min value to clamp data into."
        },
        {
          "name" : "max",
          "type" : "double",
          "optional" : false,
          "description" : "The max value to clamp data into."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "long",
          "optional" : false,
          "description" : "Numeric expression. If `null`, the function returns `null`."
        },
        {
          "name" : "min",
          "type" : "integer",
          "optional" : false,
          "description" : "The min value to clamp data into."
        },
        {
          "name" : "max",
          "type" : "integer",
          "optional" : false,
          "description" : "The max value to clamp data into."
        }
      ],
      "variadic" : false,
      "returnType" : "long"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "long",
          "optional" : false,
          "description" : "Numeric expression. If `null`, the function returns `null`."
        },
        {
          "name" : "min",
          "type" : "long",
          "optional" : false,
          "description" : "The min value to clamp data into."
        },
        {
          "name" : "max",
          "type" : "long",
          "optional" : false,
          "description" : "The max value to clamp data into."
        }
      ],
      "variadic" : false,
      "returnType" : "long"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "long",
          "optional" : false,
          "description" : "Numeric expression. If `null`, the function returns `null`."
        },
        {
          "name" : "min",
          "type" : "unsigned_long",
          "optional" : false,
          "description" : "The min value to clamp data into."
        },
        {
          "name" : "max",
          "type" : "unsigned_long",
          "optional" : false,
          "description" : "The max value to clamp data into."
        }
      ],
      "variadic" : false,
      "returnType" : "unsigned_long"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "unsigned_long",
          "optional" : false,
          "description" : "Numeric expression. If `null`, the function returns `null`."
        },
        {
          "name" : "min",
          "type" : "double",
          "optional" : false,
          "description" : "The min value to clamp data into."
        },
        {
          "name" : "max",
          "type" : "double",
          "optional" : false,
          "description" : "The max value to clamp data into."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "unsigned_long",
          "optional" : false,
          "description" : "Numeric expression. If `null`, the function returns `null`."
        },
        {
          "name" : "min",
          "type" : "integer",
          "optional" : false,
          "description" : "The min value to clamp data into."
        },
        {
          "name" : "max",
          "type" : "integer",
          "optional" : false,
          "description" : "The max value to clamp data into."
        }
      ],
      "variadic" : false,
      "returnType" : "unsigned_long"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "unsigned_long",
          "optional" : false,
          "description" : "Numeric expression. If `null`, the function returns `null`."
        },
        {
          "name" : "min",
          "type" : "long",
          "optional" : false,
          "description" : "The min value to clamp data into."
        },
        {
          "name" : "max",
          "type" : "long",
          "optional" : false,
          "description" : "The max value to clamp data into."
        }
      ],
      "variadic" : false,
      "returnType" : "long"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "unsigned_long",
          "optional" : false,
          "description" : "Numeric expression. If `null`, the function returns `null`."
        },
        {
          "name" : "min",
          "type" : "unsigned_long",
          "optional" : false,
          "description" : "The min value to clamp data into."
        },
        {
          "name" : "max",
          "type" : "unsigned_long",
          "optional" : false,
          "description" : "The max value to clamp data into."
        }
      ],
      "variadic" : false,
      "returnType" : "unsigned_long"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "version",
          "optional" : false,
          "description" : "Numeric expression. If `null`, the function returns `null`."
        },
        {
          "name" : "min",
          "type" : "version",
          "optional" : false,
          "description" : "The min value to clamp data into."
        },
        {
          "name" : "max",
          "type" : "version",
          "optional" : false,
          "description" : "The max value to clamp data into."
        }
      ],
      "variadic" : false,
      "returnType" : "version"
    }
  ],
  "examples" : [
    "TS k8s\n| EVAL full_clamped_cost = clamp(network.cost, clamp_max(network.bytes_in, 5), network.bytes_in / 100)\n| KEEP full_clamped_cost, @timestamp"
  ],
  "preview" : false,
  "snapshot_only" : false
}
