{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE NoImplicitPrelude #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Amazonka.LookoutMetrics.CreateMetricSet -- Copyright : (c) 2013-2023 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Creates a dataset. module Amazonka.LookoutMetrics.CreateMetricSet ( -- * Creating a Request CreateMetricSet (..), newCreateMetricSet, -- * Request Lenses createMetricSet_dimensionFilterList, createMetricSet_dimensionList, createMetricSet_metricSetDescription, createMetricSet_metricSetFrequency, createMetricSet_offset, createMetricSet_tags, createMetricSet_timestampColumn, createMetricSet_timezone, createMetricSet_anomalyDetectorArn, createMetricSet_metricSetName, createMetricSet_metricList, createMetricSet_metricSource, -- * Destructuring the Response CreateMetricSetResponse (..), newCreateMetricSetResponse, -- * Response Lenses createMetricSetResponse_metricSetArn, createMetricSetResponse_httpStatus, ) where import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import qualified Amazonka.Data as Data import Amazonka.LookoutMetrics.Types import qualified Amazonka.Prelude as Prelude import qualified Amazonka.Request as Request import qualified Amazonka.Response as Response -- | /See:/ 'newCreateMetricSet' smart constructor. data CreateMetricSet = CreateMetricSet' { -- | A list of filters that specify which data is kept for anomaly detection. dimensionFilterList :: Prelude.Maybe [MetricSetDimensionFilter], -- | A list of the fields you want to treat as dimensions. dimensionList :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text), -- | A description of the dataset you are creating. metricSetDescription :: Prelude.Maybe Prelude.Text, -- | The frequency with which the source data will be analyzed for anomalies. metricSetFrequency :: Prelude.Maybe Frequency, -- | After an interval ends, the amount of seconds that the detector waits -- before importing data. Offset is only supported for S3, Redshift, Athena -- and datasources. offset :: Prelude.Maybe Prelude.Natural, -- | A list of -- -- to apply to the dataset. tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text), -- | Contains information about the column used for tracking time in your -- source data. timestampColumn :: Prelude.Maybe TimestampColumn, -- | The time zone in which your source data was recorded. timezone :: Prelude.Maybe Prelude.Text, -- | The ARN of the anomaly detector that will use the dataset. anomalyDetectorArn :: Prelude.Text, -- | The name of the dataset. metricSetName :: Prelude.Text, -- | A list of metrics that the dataset will contain. metricList :: Prelude.NonEmpty Metric, -- | Contains information about how the source data should be interpreted. metricSource :: MetricSource } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'CreateMetricSet' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'dimensionFilterList', 'createMetricSet_dimensionFilterList' - A list of filters that specify which data is kept for anomaly detection. -- -- 'dimensionList', 'createMetricSet_dimensionList' - A list of the fields you want to treat as dimensions. -- -- 'metricSetDescription', 'createMetricSet_metricSetDescription' - A description of the dataset you are creating. -- -- 'metricSetFrequency', 'createMetricSet_metricSetFrequency' - The frequency with which the source data will be analyzed for anomalies. -- -- 'offset', 'createMetricSet_offset' - After an interval ends, the amount of seconds that the detector waits -- before importing data. Offset is only supported for S3, Redshift, Athena -- and datasources. -- -- 'tags', 'createMetricSet_tags' - A list of -- -- to apply to the dataset. -- -- 'timestampColumn', 'createMetricSet_timestampColumn' - Contains information about the column used for tracking time in your -- source data. -- -- 'timezone', 'createMetricSet_timezone' - The time zone in which your source data was recorded. -- -- 'anomalyDetectorArn', 'createMetricSet_anomalyDetectorArn' - The ARN of the anomaly detector that will use the dataset. -- -- 'metricSetName', 'createMetricSet_metricSetName' - The name of the dataset. -- -- 'metricList', 'createMetricSet_metricList' - A list of metrics that the dataset will contain. -- -- 'metricSource', 'createMetricSet_metricSource' - Contains information about how the source data should be interpreted. newCreateMetricSet :: -- | 'anomalyDetectorArn' Prelude.Text -> -- | 'metricSetName' Prelude.Text -> -- | 'metricList' Prelude.NonEmpty Metric -> -- | 'metricSource' MetricSource -> CreateMetricSet newCreateMetricSet pAnomalyDetectorArn_ pMetricSetName_ pMetricList_ pMetricSource_ = CreateMetricSet' { dimensionFilterList = Prelude.Nothing, dimensionList = Prelude.Nothing, metricSetDescription = Prelude.Nothing, metricSetFrequency = Prelude.Nothing, offset = Prelude.Nothing, tags = Prelude.Nothing, timestampColumn = Prelude.Nothing, timezone = Prelude.Nothing, anomalyDetectorArn = pAnomalyDetectorArn_, metricSetName = pMetricSetName_, metricList = Lens.coerced Lens.# pMetricList_, metricSource = pMetricSource_ } -- | A list of filters that specify which data is kept for anomaly detection. createMetricSet_dimensionFilterList :: Lens.Lens' CreateMetricSet (Prelude.Maybe [MetricSetDimensionFilter]) createMetricSet_dimensionFilterList = Lens.lens (\CreateMetricSet' {dimensionFilterList} -> dimensionFilterList) (\s@CreateMetricSet' {} a -> s {dimensionFilterList = a} :: CreateMetricSet) Prelude.. Lens.mapping Lens.coerced -- | A list of the fields you want to treat as dimensions. createMetricSet_dimensionList :: Lens.Lens' CreateMetricSet (Prelude.Maybe (Prelude.NonEmpty Prelude.Text)) createMetricSet_dimensionList = Lens.lens (\CreateMetricSet' {dimensionList} -> dimensionList) (\s@CreateMetricSet' {} a -> s {dimensionList = a} :: CreateMetricSet) Prelude.. Lens.mapping Lens.coerced -- | A description of the dataset you are creating. createMetricSet_metricSetDescription :: Lens.Lens' CreateMetricSet (Prelude.Maybe Prelude.Text) createMetricSet_metricSetDescription = Lens.lens (\CreateMetricSet' {metricSetDescription} -> metricSetDescription) (\s@CreateMetricSet' {} a -> s {metricSetDescription = a} :: CreateMetricSet) -- | The frequency with which the source data will be analyzed for anomalies. createMetricSet_metricSetFrequency :: Lens.Lens' CreateMetricSet (Prelude.Maybe Frequency) createMetricSet_metricSetFrequency = Lens.lens (\CreateMetricSet' {metricSetFrequency} -> metricSetFrequency) (\s@CreateMetricSet' {} a -> s {metricSetFrequency = a} :: CreateMetricSet) -- | After an interval ends, the amount of seconds that the detector waits -- before importing data. Offset is only supported for S3, Redshift, Athena -- and datasources. createMetricSet_offset :: Lens.Lens' CreateMetricSet (Prelude.Maybe Prelude.Natural) createMetricSet_offset = Lens.lens (\CreateMetricSet' {offset} -> offset) (\s@CreateMetricSet' {} a -> s {offset = a} :: CreateMetricSet) -- | A list of -- -- to apply to the dataset. createMetricSet_tags :: Lens.Lens' CreateMetricSet (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)) createMetricSet_tags = Lens.lens (\CreateMetricSet' {tags} -> tags) (\s@CreateMetricSet' {} a -> s {tags = a} :: CreateMetricSet) Prelude.. Lens.mapping Lens.coerced -- | Contains information about the column used for tracking time in your -- source data. createMetricSet_timestampColumn :: Lens.Lens' CreateMetricSet (Prelude.Maybe TimestampColumn) createMetricSet_timestampColumn = Lens.lens (\CreateMetricSet' {timestampColumn} -> timestampColumn) (\s@CreateMetricSet' {} a -> s {timestampColumn = a} :: CreateMetricSet) -- | The time zone in which your source data was recorded. createMetricSet_timezone :: Lens.Lens' CreateMetricSet (Prelude.Maybe Prelude.Text) createMetricSet_timezone = Lens.lens (\CreateMetricSet' {timezone} -> timezone) (\s@CreateMetricSet' {} a -> s {timezone = a} :: CreateMetricSet) -- | The ARN of the anomaly detector that will use the dataset. createMetricSet_anomalyDetectorArn :: Lens.Lens' CreateMetricSet Prelude.Text createMetricSet_anomalyDetectorArn = Lens.lens (\CreateMetricSet' {anomalyDetectorArn} -> anomalyDetectorArn) (\s@CreateMetricSet' {} a -> s {anomalyDetectorArn = a} :: CreateMetricSet) -- | The name of the dataset. createMetricSet_metricSetName :: Lens.Lens' CreateMetricSet Prelude.Text createMetricSet_metricSetName = Lens.lens (\CreateMetricSet' {metricSetName} -> metricSetName) (\s@CreateMetricSet' {} a -> s {metricSetName = a} :: CreateMetricSet) -- | A list of metrics that the dataset will contain. createMetricSet_metricList :: Lens.Lens' CreateMetricSet (Prelude.NonEmpty Metric) createMetricSet_metricList = Lens.lens (\CreateMetricSet' {metricList} -> metricList) (\s@CreateMetricSet' {} a -> s {metricList = a} :: CreateMetricSet) Prelude.. Lens.coerced -- | Contains information about how the source data should be interpreted. createMetricSet_metricSource :: Lens.Lens' CreateMetricSet MetricSource createMetricSet_metricSource = Lens.lens (\CreateMetricSet' {metricSource} -> metricSource) (\s@CreateMetricSet' {} a -> s {metricSource = a} :: CreateMetricSet) instance Core.AWSRequest CreateMetricSet where type AWSResponse CreateMetricSet = CreateMetricSetResponse request overrides = Request.postJSON (overrides defaultService) response = Response.receiveJSON ( \s h x -> CreateMetricSetResponse' Prelude.<$> (x Data..?> "MetricSetArn") Prelude.<*> (Prelude.pure (Prelude.fromEnum s)) ) instance Prelude.Hashable CreateMetricSet where hashWithSalt _salt CreateMetricSet' {..} = _salt `Prelude.hashWithSalt` dimensionFilterList `Prelude.hashWithSalt` dimensionList `Prelude.hashWithSalt` metricSetDescription `Prelude.hashWithSalt` metricSetFrequency `Prelude.hashWithSalt` offset `Prelude.hashWithSalt` tags `Prelude.hashWithSalt` timestampColumn `Prelude.hashWithSalt` timezone `Prelude.hashWithSalt` anomalyDetectorArn `Prelude.hashWithSalt` metricSetName `Prelude.hashWithSalt` metricList `Prelude.hashWithSalt` metricSource instance Prelude.NFData CreateMetricSet where rnf CreateMetricSet' {..} = Prelude.rnf dimensionFilterList `Prelude.seq` Prelude.rnf dimensionList `Prelude.seq` Prelude.rnf metricSetDescription `Prelude.seq` Prelude.rnf metricSetFrequency `Prelude.seq` Prelude.rnf offset `Prelude.seq` Prelude.rnf tags `Prelude.seq` Prelude.rnf timestampColumn `Prelude.seq` Prelude.rnf timezone `Prelude.seq` Prelude.rnf anomalyDetectorArn `Prelude.seq` Prelude.rnf metricSetName `Prelude.seq` Prelude.rnf metricList `Prelude.seq` Prelude.rnf metricSource instance Data.ToHeaders CreateMetricSet where toHeaders = Prelude.const ( Prelude.mconcat [ "Content-Type" Data.=# ( "application/x-amz-json-1.1" :: Prelude.ByteString ) ] ) instance Data.ToJSON CreateMetricSet where toJSON CreateMetricSet' {..} = Data.object ( Prelude.catMaybes [ ("DimensionFilterList" Data..=) Prelude.<$> dimensionFilterList, ("DimensionList" Data..=) Prelude.<$> dimensionList, ("MetricSetDescription" Data..=) Prelude.<$> metricSetDescription, ("MetricSetFrequency" Data..=) Prelude.<$> metricSetFrequency, ("Offset" Data..=) Prelude.<$> offset, ("Tags" Data..=) Prelude.<$> tags, ("TimestampColumn" Data..=) Prelude.<$> timestampColumn, ("Timezone" Data..=) Prelude.<$> timezone, Prelude.Just ("AnomalyDetectorArn" Data..= anomalyDetectorArn), Prelude.Just ("MetricSetName" Data..= metricSetName), Prelude.Just ("MetricList" Data..= metricList), Prelude.Just ("MetricSource" Data..= metricSource) ] ) instance Data.ToPath CreateMetricSet where toPath = Prelude.const "/CreateMetricSet" instance Data.ToQuery CreateMetricSet where toQuery = Prelude.const Prelude.mempty -- | /See:/ 'newCreateMetricSetResponse' smart constructor. data CreateMetricSetResponse = CreateMetricSetResponse' { -- | The ARN of the dataset. metricSetArn :: Prelude.Maybe Prelude.Text, -- | The response's http status code. httpStatus :: Prelude.Int } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'CreateMetricSetResponse' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'metricSetArn', 'createMetricSetResponse_metricSetArn' - The ARN of the dataset. -- -- 'httpStatus', 'createMetricSetResponse_httpStatus' - The response's http status code. newCreateMetricSetResponse :: -- | 'httpStatus' Prelude.Int -> CreateMetricSetResponse newCreateMetricSetResponse pHttpStatus_ = CreateMetricSetResponse' { metricSetArn = Prelude.Nothing, httpStatus = pHttpStatus_ } -- | The ARN of the dataset. createMetricSetResponse_metricSetArn :: Lens.Lens' CreateMetricSetResponse (Prelude.Maybe Prelude.Text) createMetricSetResponse_metricSetArn = Lens.lens (\CreateMetricSetResponse' {metricSetArn} -> metricSetArn) (\s@CreateMetricSetResponse' {} a -> s {metricSetArn = a} :: CreateMetricSetResponse) -- | The response's http status code. createMetricSetResponse_httpStatus :: Lens.Lens' CreateMetricSetResponse Prelude.Int createMetricSetResponse_httpStatus = Lens.lens (\CreateMetricSetResponse' {httpStatus} -> httpStatus) (\s@CreateMetricSetResponse' {} a -> s {httpStatus = a} :: CreateMetricSetResponse) instance Prelude.NFData CreateMetricSetResponse where rnf CreateMetricSetResponse' {..} = Prelude.rnf metricSetArn `Prelude.seq` Prelude.rnf httpStatus