{
  "comment" : "This is generated by ESQL's AbstractFunctionTestCase. Do not edit it. See ../README.md for how to regenerate it.",
  "type" : "grouping",
  "name" : "bucket",
  "description" : "Creates groups of values - buckets - out of a datetime or numeric input.\nThe size of the buckets can either be provided directly, or chosen based on a recommended count and values range.",
  "signatures" : [
    {
      "params" : [
        {
          "name" : "field",
          "type" : "date",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "date_period",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        }
      ],
      "variadic" : false,
      "returnType" : "date"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "date",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "date",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "date",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "date"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "date",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "date",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "keyword",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "date"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "date",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "date",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "text",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "date"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "date",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "keyword",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "date",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "date"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "date",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "keyword",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "keyword",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "date"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "date",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "keyword",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "text",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "date"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "date",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "text",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "date",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "date"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "date",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "text",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "keyword",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "date"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "date",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "text",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "text",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "date"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "date",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "time_duration",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        }
      ],
      "variadic" : false,
      "returnType" : "date"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "date_nanos",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "date_period",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        }
      ],
      "variadic" : false,
      "returnType" : "date_nanos"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "date_nanos",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "date",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "date",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "date_nanos"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "date_nanos",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "date",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "keyword",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "date_nanos"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "date_nanos",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "date",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "text",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "date_nanos"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "date_nanos",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "keyword",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "date",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "date_nanos"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "date_nanos",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "keyword",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "keyword",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "date_nanos"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "date_nanos",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "keyword",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "text",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "date_nanos"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "date_nanos",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "text",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "date",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "date_nanos"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "date_nanos",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "text",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "keyword",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "date_nanos"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "date_nanos",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "text",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "text",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "date_nanos"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "date_nanos",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "time_duration",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        }
      ],
      "variadic" : false,
      "returnType" : "date_nanos"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "double",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "double",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "double",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "double",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "double",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "double",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "double",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "double",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "integer",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "double",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "double",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "long",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "double",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "integer",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "double",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "double",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "integer",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "integer",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "double",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "integer",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "long",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "double",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "long",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "double",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "double",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "long",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "integer",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "double",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "long",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "long",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "double",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "long",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "integer",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "double",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "integer",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "integer",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "double",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "double",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "integer",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "double",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "integer",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "integer",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "double",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "long",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "integer",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "integer",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "double",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "integer",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "integer",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "integer",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "integer",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "integer",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "long",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "integer",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "long",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "double",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "integer",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "long",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "integer",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "integer",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "long",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "long",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "integer",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "long",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "long",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "double",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "long",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "long",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "double",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "double",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "long",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "double",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "integer",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "long",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "double",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "long",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "long",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "integer",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "double",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "long",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "integer",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "integer",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "long",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "integer",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "long",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "long",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "long",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "double",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "long",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "long",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "integer",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "long",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "integer",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        },
        {
          "name" : "from",
          "type" : "long",
          "optional" : true,
          "description" : "Start of the range. Can be a number, a date or a date expressed as a string."
        },
        {
          "name" : "to",
          "type" : "long",
          "optional" : true,
          "description" : "End of the range. Can be a number, a date or a date expressed as a string."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    },
    {
      "params" : [
        {
          "name" : "field",
          "type" : "long",
          "optional" : false,
          "description" : "Numeric or date expression from which to derive buckets."
        },
        {
          "name" : "buckets",
          "type" : "long",
          "optional" : false,
          "description" : "Target number of buckets, or desired bucket size if `from` and `to` parameters are omitted."
        }
      ],
      "variadic" : false,
      "returnType" : "double"
    }
  ],
  "examples" : [
    "FROM employees\n| WHERE hire_date >= \"1985-01-01T00:00:00Z\" AND hire_date < \"1986-01-01T00:00:00Z\"\n| STATS hire_date = MV_SORT(VALUES(hire_date)) BY month = BUCKET(hire_date, 20, \"1985-01-01T00:00:00Z\", \"1986-01-01T00:00:00Z\")",
    "FROM employees\n| WHERE hire_date >= \"1985-01-01T00:00:00Z\" AND hire_date < \"1986-01-01T00:00:00Z\"\n| STATS hires_per_month = COUNT(*) BY month = BUCKET(hire_date, 20, \"1985-01-01T00:00:00Z\", \"1986-01-01T00:00:00Z\")\n| SORT month",
    "FROM employees\n| WHERE hire_date >= \"1985-01-01T00:00:00Z\" AND hire_date < \"1986-01-01T00:00:00Z\"\n| STATS hires_per_week = COUNT(*) BY week = BUCKET(hire_date, 100, \"1985-01-01T00:00:00Z\", \"1986-01-01T00:00:00Z\")",
    "FROM employees\n| WHERE hire_date >= \"1985-01-01T00:00:00Z\" AND hire_date < \"1986-01-01T00:00:00Z\"\n| STATS hires_per_week = COUNT(*) BY week = BUCKET(hire_date, 1 week)\n| SORT week",
    "FROM employees\n| STATS COUNT(*) by bs = BUCKET(salary, 20, 25324, 74999)\n| SORT bs",
    "FROM employees\n| WHERE hire_date >= \"1985-01-01T00:00:00Z\" AND hire_date < \"1986-01-01T00:00:00Z\"\n| STATS c = COUNT(1) BY b = BUCKET(salary, 5000.)\n| SORT b",
    "FROM sample_data\n| WHERE @timestamp >= NOW() - 1 day and @timestamp < NOW()\n| STATS COUNT(*) BY bucket = BUCKET(@timestamp, 25, NOW() - 1 day, NOW())",
    "FROM employees\n| WHERE hire_date >= \"1985-01-01T00:00:00Z\" AND hire_date < \"1986-01-01T00:00:00Z\"\n| STATS AVG(salary) BY bucket = BUCKET(hire_date, 20, \"1985-01-01T00:00:00Z\", \"1986-01-01T00:00:00Z\")",
    "FROM employees\n| STATS s1 = b1 + 1, s2 = BUCKET(salary / 1000 + 999, 50.) + 2 BY b1 = BUCKET(salary / 100 + 99, 50.), b2 = BUCKET(salary / 1000 + 999, 50.)\n| SORT b1, b2\n| KEEP s1, b1, s2, b2",
    "FROM employees\n| STATS dates = MV_SORT(VALUES(birth_date)) BY b = BUCKET(birth_date + 1 HOUR, 1 YEAR) - 1 HOUR\n| EVAL d_count = MV_COUNT(dates)"
  ],
  "preview" : false,
  "snapshot_only" : false
}
