/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 * 
 *  http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
/*
 * Do not modify this file. This file is generated from the sagemaker-2017-07-24.normal.json service model.
 */
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.SageMaker.Model
{
    /// 
    /// The collection of settings used by an AutoML job V2 for the time-series forecasting
    /// problem type.
    /// 
    ///   
    /// 
    /// The TimeSeriesForecastingJobConfig problem type is only available in
    /// private beta. Contact Amazon Web Services Support or your account manager to learn
    /// more about access privileges.
    /// 
    ///  
    /// 
    public partial class TimeSeriesForecastingJobConfig
    {
        private AutoMLJobCompletionCriteria _completionCriteria;
        private string _featureSpecificationS3Uri;
        private string _forecastFrequency;
        private int? _forecastHorizon;
        private List _forecastQuantiles = new List();
        private TimeSeriesConfig _timeSeriesConfig;
        private TimeSeriesTransformations _transformations;
        /// 
        /// Gets and sets the property CompletionCriteria.
        /// 
        public AutoMLJobCompletionCriteria CompletionCriteria
        {
            get { return this._completionCriteria; }
            set { this._completionCriteria = value; }
        }
        // Check to see if CompletionCriteria property is set
        internal bool IsSetCompletionCriteria()
        {
            return this._completionCriteria != null;
        }
        /// 
        /// Gets and sets the property FeatureSpecificationS3Uri. 
        /// 
        /// A URL to the Amazon S3 data source containing additional selected features that complement
        /// the target, itemID, timestamp, and grouped columns set in TimeSeriesConfig.
        /// When not provided, the AutoML job V2 includes all the columns from the original dataset
        /// that are not already declared in TimeSeriesConfig. If provided, the AutoML
        /// job V2 only considers these additional columns as a complement to the ones declared
        /// in TimeSeriesConfig.
        /// 
        ///  
        /// 
        /// You can input FeatureAttributeNames (optional) in JSON format as shown
        /// below: 
        /// 
        ///  
        /// 
        ///  { "FeatureAttributeNames":["col1", "col2", ...] }.
        /// 
        ///  
        /// 
        /// You can also specify the data type of the feature (optional) in the format shown below:
        /// 
        ///  
        /// 
        ///  { "FeatureDataTypes":{"col1":"numeric", "col2":"categorical" ... } }
        /// 
        /// 
        ///  
        /// 
        /// Autopilot supports the following data types: numeric, categorical,
        /// text, and datetime.
        /// 
        ///   
        /// 
        /// These column keys must not include any column set in TimeSeriesConfig.
        /// 
        ///  
        /// 
        [AWSProperty(Max=1024)]
        public string FeatureSpecificationS3Uri
        {
            get { return this._featureSpecificationS3Uri; }
            set { this._featureSpecificationS3Uri = value; }
        }
        // Check to see if FeatureSpecificationS3Uri property is set
        internal bool IsSetFeatureSpecificationS3Uri()
        {
            return this._featureSpecificationS3Uri != null;
        }
        /// 
        /// Gets and sets the property ForecastFrequency. 
        /// 
        /// The frequency of predictions in a forecast.
        /// 
        ///  
        /// 
        /// Valid intervals are an integer followed by Y (Year), M (Month), W (Week), D (Day),
        /// H (Hour), and min (Minute). For example, 1D indicates every day and 15min
        /// indicates every 15 minutes. The value of a frequency must not overlap with the next
        /// larger frequency. For example, you must use a frequency of 1H instead
        /// of 60min.
        /// 
        ///  
        /// 
        /// The valid values for each frequency are the following:
        /// 
        ///   -  
        /// 
        /// Minute - 1-59
        /// 
        ///  
-  
        /// 
        /// Hour - 1-23
        /// 
        ///  
-  
        /// 
        /// Day - 1-6
        /// 
        ///  
-  
        /// 
        /// Week - 1-4
        /// 
        ///  
-  
        /// 
        /// Month - 1-11
        /// 
        ///  
-  
        /// 
        /// Year - 1
        /// 
        ///  
/// 
        [AWSProperty(Required=true, Min=1, Max=5)]
        public string ForecastFrequency
        {
            get { return this._forecastFrequency; }
            set { this._forecastFrequency = value; }
        }
        // Check to see if ForecastFrequency property is set
        internal bool IsSetForecastFrequency()
        {
            return this._forecastFrequency != null;
        }
        /// 
        /// Gets and sets the property ForecastHorizon. 
        /// 
        /// The number of time-steps that the model predicts. The forecast horizon is also called
        /// the prediction length. The maximum forecast horizon is the lesser of 500 time-steps
        /// or 1/4 of the time-steps in the dataset.
        /// 
        /// 
        [AWSProperty(Required=true, Min=1)]
        public int ForecastHorizon
        {
            get { return this._forecastHorizon.GetValueOrDefault(); }
            set { this._forecastHorizon = value; }
        }
        // Check to see if ForecastHorizon property is set
        internal bool IsSetForecastHorizon()
        {
            return this._forecastHorizon.HasValue; 
        }
        /// 
        /// Gets and sets the property ForecastQuantiles. 
        /// 
        /// The quantiles used to train the model for forecasts at a specified quantile. You can
        /// specify quantiles from0.01 (p1) to 0.99 (p99), by increments
        /// of 0.01 or higher. Up to five forecast quantiles can be specified. When ForecastQuantiles
        /// is not provided, the AutoML job uses the quantiles p10, p50, and p90 as default.
        /// 
        /// 
        [AWSProperty(Min=1, Max=5)]
        public List ForecastQuantiles
        {
            get { return this._forecastQuantiles; }
            set { this._forecastQuantiles = value; }
        }
        // Check to see if ForecastQuantiles property is set
        internal bool IsSetForecastQuantiles()
        {
            return this._forecastQuantiles != null && this._forecastQuantiles.Count > 0; 
        }
        /// 
        /// Gets and sets the property TimeSeriesConfig. 
        /// 
        /// The collection of components that defines the time-series.
        /// 
        /// 
        [AWSProperty(Required=true)]
        public TimeSeriesConfig TimeSeriesConfig
        {
            get { return this._timeSeriesConfig; }
            set { this._timeSeriesConfig = value; }
        }
        // Check to see if TimeSeriesConfig property is set
        internal bool IsSetTimeSeriesConfig()
        {
            return this._timeSeriesConfig != null;
        }
        /// 
        /// Gets and sets the property Transformations. 
        /// 
        /// The transformations modifying specific attributes of the time-series, such as filling
        /// strategies for missing values.
        /// 
        /// 
        public TimeSeriesTransformations Transformations
        {
            get { return this._transformations; }
            set { this._transformations = value; }
        }
        // Check to see if Transformations property is set
        internal bool IsSetTransformations()
        {
            return this._transformations != null;
        }
    }
}