A what-if forecast is a forecast that is created from a modified version of the baseline forecast. Each what-if forecast incorporates either a replacement dataset or a set of transformations to the original dataset.

See also: AWS API Documentation

Request Syntax

response = client.create_what_if_forecast(
            'Action': {
                'AttributeName': 'string',
                'Operation': 'ADD'|'SUBTRACT'|'MULTIPLY'|'DIVIDE',
                'Value': 123.0
            'TimeSeriesConditions': [
                    'AttributeName': 'string',
                    'AttributeValue': 'string',
                    'Condition': 'EQUALS'|'NOT_EQUALS'|'LESS_THAN'|'GREATER_THAN'
        'S3Config': {
            'Path': 'string',
            'RoleArn': 'string',
            'KMSKeyArn': 'string'
        'Schema': {
            'Attributes': [
                    'AttributeName': 'string',
                    'AttributeType': 'string'|'integer'|'float'|'timestamp'|'geolocation'
        'Format': 'string',
        'TimestampFormat': 'string'
            'Key': 'string',
            'Value': 'string'
  • WhatIfForecastName (string) --


    The name of the what-if forecast. Names must be unique within each what-if analysis.

  • WhatIfAnalysisArn (string) --


    The Amazon Resource Name (ARN) of the what-if analysis.

  • TimeSeriesTransformations (list) --

    The transformations that are applied to the baseline time series. Each transformation contains an action and a set of conditions. An action is applied only when all conditions are met. If no conditions are provided, the action is applied to all items.

    • (dict) --

      A transformation function is a pair of operations that select and modify the rows in a related time series. You select the rows that you want with a condition operation and you modify the rows with a transformation operation. All conditions are joined with an AND operation, meaning that all conditions must be true for the transformation to be applied. Transformations are applied in the order that they are listed.

      • Action (dict) --

        An array of actions that define a time series and how it is transformed. These transformations create a new time series that is used for the what-if analysis.

        • AttributeName (string) -- [REQUIRED]

          The related time series that you are modifying. This value is case insensitive.

        • Operation (string) -- [REQUIRED]

          The operation that is applied to the provided attribute. Operations include:

          • ADD - adds Value to all rows of AttributeName .
          • SUBTRACT - subtracts Value from all rows of AttributeName .
          • MULTIPLY - multiplies all rows of AttributeName by Value .
          • DIVIDE - divides all rows of AttributeName by Value .
        • Value (float) -- [REQUIRED]

          The value that is applied for the chosen Operation .

      • TimeSeriesConditions (list) --

        An array of conditions that define which members of the related time series are transformed.

        • (dict) --

          Creates a subset of items within an attribute that are modified. For example, you can use this operation to create a subset of items that cost $5 or less. To do this, you specify "AttributeName": "price" , "AttributeValue": "5" , and "Condition": "LESS_THAN" . Pair this operation with the Action operation within the CreateWhatIfForecastRequest$TimeSeriesTransformations operation to define how the attribute is modified.

          • AttributeName (string) -- [REQUIRED]

            The item_id, dimension name, IM name, or timestamp that you are modifying.

          • AttributeValue (string) -- [REQUIRED]

            The value that is applied for the chosen Condition .

          • Condition (string) -- [REQUIRED]

            The condition to apply. Valid values are EQUALS , NOT_EQUALS , LESS_THAN and GREATER_THAN .

  • TimeSeriesReplacementsDataSource (dict) --

    The replacement time series dataset, which contains the rows that you want to change in the related time series dataset. A replacement time series does not need to contain all rows that are in the baseline related time series. Include only the rows (measure-dimension combinations) that you want to include in the what-if forecast.

    This dataset is merged with the original time series to create a transformed dataset that is used for the what-if analysis.

    This dataset should contain the items to modify (such as item_id or workforce_type), any relevant dimensions, the timestamp column, and at least one of the related time series columns. This file should not contain duplicate timestamps for the same time series.

    Timestamps and item_ids not included in this dataset are not included in the what-if analysis.

    • S3Config (dict) -- [REQUIRED]

      The path to the file(s) in an Amazon Simple Storage Service (Amazon S3) bucket, and an Identity and Access Management (IAM) role that Amazon Forecast can assume to access the file(s). Optionally, includes an Key Management Service (KMS) key. This object is part of the DataSource object that is submitted in the CreateDatasetImportJob request, and part of the DataDestination object.

      • Path (string) -- [REQUIRED]

        The path to an Amazon Simple Storage Service (Amazon S3) bucket or file(s) in an Amazon S3 bucket.

      • RoleArn (string) -- [REQUIRED]

        The ARN of the Identity and Access Management (IAM) role that Amazon Forecast can assume to access the Amazon S3 bucket or files. If you provide a value for the KMSKeyArn key, the role must allow access to the key.

        Passing a role across Amazon Web Services accounts is not allowed. If you pass a role that isn't in your account, you get an InvalidInputException error.

      • KMSKeyArn (string) --

        The Amazon Resource Name (ARN) of an Key Management Service (KMS) key.

    • Schema (dict) -- [REQUIRED]

      Defines the fields of a dataset.

      • Attributes (list) --

        An array of attributes specifying the name and type of each field in a dataset.

        • (dict) --

          An attribute of a schema, which defines a dataset field. A schema attribute is required for every field in a dataset. The Schema object contains an array of SchemaAttribute objects.

          • AttributeName (string) --

            The name of the dataset field.

          • AttributeType (string) --

            The data type of the field.

            For a related time series dataset, other than date, item_id, and forecast dimensions attributes, all attributes should be of numerical type (integer/float).

    • Format (string) --

      The format of the replacement data, CSV or PARQUET.

    • TimestampFormat (string) --

      The timestamp format of the replacement data.

  • Tags (list) --

    A list of tags to apply to the what if forecast.

    • (dict) --

      The optional metadata that you apply to a resource to help you categorize and organize them. Each tag consists of a key and an optional value, both of which you define.

      The following basic restrictions apply to tags:

      • Maximum number of tags per resource - 50.
      • For each resource, each tag key must be unique, and each tag key can have only one value.
      • Maximum key length - 128 Unicode characters in UTF-8.
      • Maximum value length - 256 Unicode characters in UTF-8.
      • If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.
      • Tag keys and values are case sensitive.
      • Do not use aws: , AWS: , or any upper or lowercase combination of such as a prefix for keys as it is reserved for Amazon Web Services use. You cannot edit or delete tag keys with this prefix. Values can have this prefix. If a tag value has aws as its prefix but the key does not, then Forecast considers it to be a user tag and will count against the limit of 50 tags. Tags with only the key prefix of aws do not count against your tags per resource limit.
      • Key (string) -- [REQUIRED]

        One part of a key-value pair that makes up a tag. A key is a general label that acts like a category for more specific tag values.

      • Value (string) -- [REQUIRED]

        The optional part of a key-value pair that makes up a tag. A value acts as a descriptor within a tag category (key).

Return type



Response Syntax

    'WhatIfForecastArn': 'string'

Response Structure

  • (dict) --

    • WhatIfForecastArn (string) --

      The Amazon Resource Name (ARN) of the what-if forecast.


  • ForecastService.Client.exceptions.InvalidInputException
  • ForecastService.Client.exceptions.ResourceAlreadyExistsException
  • ForecastService.Client.exceptions.ResourceNotFoundException
  • ForecastService.Client.exceptions.ResourceInUseException
  • ForecastService.Client.exceptions.LimitExceededException