monitor_schema.models.SeasonalConfig#

class monitor_schema.models.SeasonalConfig[source]#

An analyzer using stddev for a window of time range.

This will fall back to Poisson distribution if there is only 1 value in the baseline.

This only works with TrailingWindow baseline (TODO: add backend validation)

Show JSON schema
{
   "title": "SeasonalConfig",
   "description": "An analyzer using stddev for a window of time range.\n\nThis will fall back to Poisson distribution if there is only 1 value in the baseline.\n\nThis only works with TrailingWindow baseline (TODO: add backend validation)",
   "type": "object",
   "properties": {
      "schemaVersion": {
         "title": "SchemaVersion",
         "description": "The schema version of an algorithm. Typically this valueis not required.",
         "type": "integer"
      },
      "params": {
         "title": "Params",
         "description": "Extra parameters for the algorithm",
         "type": "object",
         "additionalProperties": {
            "type": "string",
            "maxLength": 1000
         }
      },
      "metric": {
         "title": "Metric",
         "description": "The target metric. This field cannot be change once the analyzer is created.",
         "anyOf": [
            {
               "$ref": "#/definitions/DatasetMetric"
            },
            {
               "$ref": "#/definitions/SimpleColumnMetric"
            },
            {
               "type": "string",
               "maxLength": 100
            }
         ]
      },
      "maxUpperThreshold": {
         "title": "Maxupperthreshold",
         "description": "Capping the threshold by this value. This value only becomes effective if the calculated upper threshold from the calculation is greater than this value.",
         "type": "number"
      },
      "minLowerThreshold": {
         "title": "Minlowerthreshold",
         "description": "Capping the minimum threshold by this value. This value only becomes effective if the calculated lower threshold from the calculation is lesser than this value",
         "type": "number"
      },
      "type": {
         "title": "Type",
         "enum": [
            "seasonal"
         ],
         "type": "string"
      },
      "algorithm": {
         "title": "Algorithm",
         "description": "The algorithm implementation for seasonal analysis",
         "default": "arima",
         "enum": [
            "arima",
            "rego",
            "stastforecast"
         ],
         "type": "string"
      },
      "minBatchSize": {
         "title": "MinBatchSize",
         "description": "Minimum number of batches that is required",
         "default": 30,
         "type": "integer"
      },
      "alpha": {
         "title": "Alpha",
         "description": "significance level for the confidence interval produced around predictions. If 0.05 then the algorithm will calculate a 95% confidence interval around predictions",
         "default": 0.05,
         "type": "number"
      },
      "baseline": {
         "$ref": "#/definitions/TrailingWindowBaseline"
      },
      "stddevTimeRanges": {
         "title": "StddevTimeRanges",
         "description": "Ranges of time where we will apply standard deviation for confidence intervals rather than the confidence interval from the algorithm. This is to prevent data from specialevents from making the bands very wide for timeseries-based predictions.",
         "type": "array",
         "items": {
            "$ref": "#/definitions/TimeRange"
         }
      },
      "stddevMaxBatchSize": {
         "title": "Stddevmaxbatchsize",
         "description": "Maxinum number of data points to consider for calculating stddev. These are the data pointspreceeding the target batch.",
         "type": "integer"
      },
      "stddevFactor": {
         "title": "Stddevfactor",
         "description": "The multiplier factor for calculating upper bounds and lower bounds from the prediction.",
         "default": 1.0,
         "type": "number"
      }
   },
   "required": [
      "metric",
      "type",
      "baseline"
   ],
   "additionalProperties": false,
   "definitions": {
      "DatasetMetric": {
         "title": "DatasetMetric",
         "description": "Metrics that are applicable at the dataset level.",
         "enum": [
            "profile.count",
            "profile.last_ingestion_time",
            "profile.first_ingestion_time",
            "column_row_count_sum",
            "shape_column_count",
            "shape_row_count",
            "input.count",
            "output.count",
            "classification.f1",
            "classification.precision",
            "classification.recall",
            "classification.accuracy",
            "classification.auc",
            "regression.mse",
            "regression.mae",
            "regression.rmse"
         ],
         "type": "string"
      },
      "SimpleColumnMetric": {
         "title": "SimpleColumnMetric",
         "description": "Simple column metrics that are basically just a single number.",
         "enum": [
            "count",
            "median",
            "max",
            "min",
            "mean",
            "stddev",
            "variance",
            "unique_upper",
            "unique_upper_ratio",
            "unique_est",
            "unique_est_ratio",
            "unique_lower",
            "unique_lower_ratio",
            "count_bool",
            "count_bool_ratio",
            "count_integral",
            "count_integral_ratio",
            "count_fractional",
            "count_fractional_ratio",
            "count_string",
            "count_string_ratio",
            "count_null",
            "count_null_ratio",
            "inferred_data_type",
            "quantile_5",
            "quantile_75",
            "quantile_25",
            "quantile_90",
            "quantile_95",
            "quantile_99"
         ],
         "type": "string"
      },
      "TimeRange": {
         "title": "TimeRange",
         "description": "Support for a specific time range.",
         "type": "object",
         "properties": {
            "start": {
               "title": "Start",
               "description": "Inclusive. Start time of a time range.",
               "type": "string",
               "format": "date-time"
            },
            "end": {
               "title": "End",
               "description": "Exclusive. End time of a time range.",
               "type": "string",
               "format": "date-time"
            }
         },
         "required": [
            "start",
            "end"
         ],
         "additionalProperties": false
      },
      "TrailingWindowBaseline": {
         "title": "TrailingWindowBaseline",
         "description": "A dynamic trailing window.\n\nThis is useful if you don't have a static baseline to monitor against. This is the default mode for most\nmonitors.",
         "type": "object",
         "properties": {
            "datasetId": {
               "title": "DatasetId",
               "description": "The unique ID of an dataset. This is specific to WhyLabs. If the dataset ID does not exist, user will get a validation exception when saving the config with WhyLabs API",
               "maxLength": 100,
               "pattern": "[a-zA-Z0-9\\-_\\.]+",
               "type": "string"
            },
            "inheritSegment": {
               "title": "InheritSegment",
               "description": "Default to false. Whether to use the segment from the target to filter down the baseline",
               "type": "boolean"
            },
            "type": {
               "title": "Type",
               "enum": [
                  "TrailingWindow"
               ],
               "type": "string"
            },
            "size": {
               "title": "Size",
               "description": "Window size",
               "exclusiveMinimum": 3,
               "maximum": 90,
               "type": "integer"
            },
            "offset": {
               "title": "Offset",
               "description": "Offset from the current batch for the range of the trailing window. Default to 1 (the previous batch). This means that if set this to 0, the baseline will include the current batch's value, orif we set it o 7, then the window is off by 7.",
               "type": "integer"
            },
            "exclusionRanges": {
               "title": "ExclusionRanges",
               "description": "The list of exclusion ranges",
               "maxItems": 100,
               "type": "array",
               "items": {
                  "$ref": "#/definitions/TimeRange"
               }
            }
         },
         "required": [
            "type",
            "size"
         ],
         "additionalProperties": false
      }
   }
}

Config
  • schema_extra: function = <function AlgorithmConfig.Config.schema_extra at 0xffff857b2a60>

Fields
field algorithm: Literal['arima', 'rego', 'stastforecast'] = 'arima'#

The algorithm implementation for seasonal analysis

field alpha: Optional[float] = 0.05#

significance level for the confidence interval produced around predictions. If 0.05 then the algorithm will calculate a 95% confidence interval around predictions

field baseline: TrailingWindowBaseline [Required]#
field minBatchSize: Optional[int] = 30#

Minimum number of batches that is required

field stddevFactor: Optional[float] = 1.0#

The multiplier factor for calculating upper bounds and lower bounds from the prediction.

field stddevMaxBatchSize: Optional[int] = None#

Maxinum number of data points to consider for calculating stddev. These are the data pointspreceeding the target batch.

field stddevTimeRanges: Optional[List[TimeRange]] = None#

Ranges of time where we will apply standard deviation for confidence intervals rather than the confidence interval from the algorithm. This is to prevent data from specialevents from making the bands very wide for timeseries-based predictions.

field type: seasonal: 'seasonal'>] [Required]#