From 837d6e29671e7f887773a7ed387db0290e9dd67f Mon Sep 17 00:00:00 2001 From: Caio Saldanha Date: Thu, 8 Jul 2021 14:02:43 -0700 Subject: [PATCH] Rebased everything --- .../src/DataFeedFilter.cs | 6 +- .../src/FeedbackQueryTimeMode.cs | 4 +- .../src/Generated/Models/AnomalyValue.cs | 7 -- .../src/Generated/Models/ChangePointValue.cs | 7 -- .../src/Generated/Models/MetricPeriodType.cs | 5 - .../GetDataFeedIngestionStatusesOptions.cs | 8 +- .../src/GetHooksOptions.cs | 3 +- .../src/GetMetricDimensionValuesOptions.cs | 3 +- .../src/GetMetricEnrichmentStatusesOptions.cs | 21 ++-- .../src/MetricsAdvisorAdministrationClient.cs | 3 +- .../src/MetricsAdvisorClient.cs | 28 +++-- .../src/MetricsAdvisorClientsOptions.cs | 5 +- .../AnomalyAlertConfiguration.cs | 48 ++++++--- .../AlertTriggering/BoundaryDirection.cs | 9 +- .../AlertTriggering/BoundaryMeasureType.cs | 4 +- .../MetricAlertConfiguration.cs | 34 +++--- .../MetricAlertConfigurationsOperator.cs | 17 ++- .../MetricAnomalyAlertConditions.cs | 8 +- .../MetricAnomalyAlertScope.cs | 44 +++++--- .../MetricAnomalyAlertScopeType.cs | 7 +- .../MetricAnomalyAlertSnoozeCondition.cs | 22 ++-- .../MetricBoundaryCondition.cs | 45 +++++--- .../AlertTriggering/SeverityCondition.cs | 10 +- .../src/Models/AlertTriggering/SnoozeScope.cs | 7 +- .../Models/AlertTriggering/TopNGroupScope.cs | 22 ++-- .../AnomalyDetectionConfiguration.cs | 51 ++++++--- .../AnomalyDetectorDirection.cs | 10 +- .../ChangeThresholdCondition.cs | 39 ++++--- .../HardThresholdCondition.cs | 22 ++-- .../MetricEnrichedSeriesData.cs | 2 +- .../MetricWholeSeriesDetectionCondition.cs | 30 +++++- .../SmartDetectionCondition.cs | 20 ++-- .../AnomalyDetection/SuppressCondition.cs | 26 +++-- .../DataLakeSharedKeyCredentialEntity.cs | 4 + .../Credential/DataSourceCredentialEntity.cs | 14 ++- .../ServicePrincipalCredentialEntity.cs | 4 + ...vicePrincipalInKeyVaultCredentialEntity.cs | 4 + .../SqlConnectionStringCredentialEntity.cs | 4 + .../src/Models/DataFeed/DataFeed.cs | 100 ++++++++++++++---- .../src/Models/DataFeed/DataFeedAccessMode.cs | 2 +- .../src/Models/DataFeed/DataFeedDimension.cs | 15 +-- .../Models/DataFeed/DataFeedGranularity.cs | 10 +- .../DataFeed/DataFeedIngestionSettings.cs | 33 ++++-- .../src/Models/DataFeed/DataFeedMetric.cs | 25 +++-- .../DataFeedMissingDataPointFillSettings.cs | 9 +- .../DataFeedMissingDataPointFillType.cs | 2 +- .../Models/DataFeed/DataFeedRollupSettings.cs | 25 +++-- .../src/Models/DataFeed/DataFeedRollupType.cs | 6 +- .../src/Models/DataFeed/DataFeedSchema.cs | 35 ++++-- .../src/Models/DataFeed/DataFeedSource.cs | 18 +++- .../src/Models/DataFeed/DataFeedStatus.cs | 5 +- .../src/Models/MetricFeedback/AnomalyValue.cs | 28 +++++ .../Models/MetricFeedback/ChangePointValue.cs | 28 +++++ .../MetricFeedback/MetricAnomalyFeedback.cs | 12 ++- .../MetricChangePointFeedback.cs | 13 ++- .../MetricFeedback/MetricCommentFeedback.cs | 9 +- .../Models/MetricFeedback/MetricFeedback.cs | 10 +- .../MetricFeedback/MetricPeriodFeedback.cs | 17 ++- .../Models/MetricFeedback/MetricPeriodType.cs | 15 +++ .../NotificationHook/EmailNotificationHook.cs | 9 +- .../NotificationHook/NotificationHook.cs | 29 ++++- .../NotificationHook/WebNotificationHook.cs | 28 ++++- .../src/Models/TimeSeries/EnrichmentStatus.cs | 20 +++- .../AnomalyDetectionConfigurationLiveTests.cs | 6 +- 64 files changed, 802 insertions(+), 314 deletions(-) create mode 100644 sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/AnomalyValue.cs create mode 100644 sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/ChangePointValue.cs diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/DataFeedFilter.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/DataFeedFilter.cs index faf8ea11bccd..6f116b4fd7d0 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/DataFeedFilter.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/DataFeedFilter.cs @@ -19,12 +19,14 @@ public DataFeedFilter() } /// - /// Filters the result by . + /// Filters the result by . Only data feeds containing the filter as a + /// substring of their names will be returned. Case insensitive. /// public string Name { get; set; } /// - /// Filters the result by . + /// Filters the result by . Only data feeds containing the filter as a + /// substring of their creators will be returned. Case insensitive. /// public string Creator { get; set; } diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/FeedbackQueryTimeMode.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/FeedbackQueryTimeMode.cs index c6b193849dab..ff1e41c02f4a 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/FeedbackQueryTimeMode.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/FeedbackQueryTimeMode.cs @@ -19,12 +19,12 @@ public enum FeedbackQueryTimeMode None, /// - /// Filters feedbacks by its metric's timestamps. + /// Filters feedback by its metric's timestamps. /// MetricTimestamp, /// - /// Filters feedbacks by . + /// Filters feedback by . /// [CodeGenMember("FeedbackCreatedTime")] FeedbackCreatedOn diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Generated/Models/AnomalyValue.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Generated/Models/AnomalyValue.cs index 0a429b86830e..765537731f0e 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Generated/Models/AnomalyValue.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Generated/Models/AnomalyValue.cs @@ -25,13 +25,6 @@ public AnomalyValue(string value) private const string AutoDetectValue = "AutoDetect"; private const string AnomalyValue1 = "Anomaly"; private const string NotAnomalyValue = "NotAnomaly"; - - /// AutoDetect. - public static AnomalyValue AutoDetect { get; } = new AnomalyValue(AutoDetectValue); - /// Anomaly. - public static AnomalyValue Anomaly { get; } = new AnomalyValue(AnomalyValue1); - /// NotAnomaly. - public static AnomalyValue NotAnomaly { get; } = new AnomalyValue(NotAnomalyValue); /// Determines if two values are the same. public static bool operator ==(AnomalyValue left, AnomalyValue right) => left.Equals(right); /// Determines if two values are not the same. diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Generated/Models/ChangePointValue.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Generated/Models/ChangePointValue.cs index ac05f73a3543..c567fc031422 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Generated/Models/ChangePointValue.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Generated/Models/ChangePointValue.cs @@ -25,13 +25,6 @@ public ChangePointValue(string value) private const string AutoDetectValue = "AutoDetect"; private const string ChangePointValue1 = "ChangePoint"; private const string NotChangePointValue = "NotChangePoint"; - - /// AutoDetect. - public static ChangePointValue AutoDetect { get; } = new ChangePointValue(AutoDetectValue); - /// ChangePoint. - public static ChangePointValue ChangePoint { get; } = new ChangePointValue(ChangePointValue1); - /// NotChangePoint. - public static ChangePointValue NotChangePoint { get; } = new ChangePointValue(NotChangePointValue); /// Determines if two values are the same. public static bool operator ==(ChangePointValue left, ChangePointValue right) => left.Equals(right); /// Determines if two values are not the same. diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Generated/Models/MetricPeriodType.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Generated/Models/MetricPeriodType.cs index 7a419db8e1bd..37202cb89f1e 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Generated/Models/MetricPeriodType.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Generated/Models/MetricPeriodType.cs @@ -24,11 +24,6 @@ public MetricPeriodType(string value) private const string AutoDetectValue = "AutoDetect"; private const string AssignValueValue = "AssignValue"; - - /// AutoDetect. - public static MetricPeriodType AutoDetect { get; } = new MetricPeriodType(AutoDetectValue); - /// AssignValue. - public static MetricPeriodType AssignValue { get; } = new MetricPeriodType(AssignValueValue); /// Determines if two values are the same. public static bool operator ==(MetricPeriodType left, MetricPeriodType right) => left.Equals(right); /// Determines if two values are not the same. diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/GetDataFeedIngestionStatusesOptions.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/GetDataFeedIngestionStatusesOptions.cs index 4bf37f20bb41..0707674f5ba3 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/GetDataFeedIngestionStatusesOptions.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/GetDataFeedIngestionStatusesOptions.cs @@ -11,9 +11,11 @@ namespace Azure.AI.MetricsAdvisor.Administration /// public class GetDataFeedIngestionStatusesOptions { - /// Initializes a new instance of the class. - /// The start point of time range to query data ingestion status. - /// The end point of time range to query data ingestion status. + /// + /// Initializes a new instance of the class. + /// + /// The start point of time range to query data ingestion status. + /// The end point of time range to query data ingestion status. public GetDataFeedIngestionStatusesOptions(DateTimeOffset startsOn, DateTimeOffset endsOn) { StartsOn = startsOn; diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/GetHooksOptions.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/GetHooksOptions.cs index d793d1a8498c..f139b625a4e5 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/GetHooksOptions.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/GetHooksOptions.cs @@ -10,7 +10,8 @@ namespace Azure.AI.MetricsAdvisor.Administration public class GetHooksOptions { /// - /// The name of the hook to filter on. + /// Filters the result by . Only hooks containing the filter as a + /// substring of their names will be returned. Case insensitive. /// public string HookNameFilter { get; set; } diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/GetMetricDimensionValuesOptions.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/GetMetricDimensionValuesOptions.cs index 92f7dd133319..5d352b2cc4c1 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/GetMetricDimensionValuesOptions.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/GetMetricDimensionValuesOptions.cs @@ -17,7 +17,8 @@ public GetMetricDimensionValuesOptions() } /// - /// The dimension value to be filtered. + /// Filters the result by dimension value. Only values containing the filter as a + /// substring will be returned. Case insensitive. /// public string DimensionValueFilter { get; set; } diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/GetMetricEnrichmentStatusesOptions.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/GetMetricEnrichmentStatusesOptions.cs index dfc78e54524c..987de2cc7441 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/GetMetricEnrichmentStatusesOptions.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/GetMetricEnrichmentStatusesOptions.cs @@ -5,22 +5,31 @@ namespace Azure.AI.MetricsAdvisor { - /// The GetEnrichmentStatusesOptions. + /// + /// The set of options that can be specified when calling or + /// to configure the behavior of the request. + /// public class GetMetricEnrichmentStatusesOptions { - /// Initializes a new instance of . - /// the start point of time range to query anomaly detection status. - /// the end point of time range to query anomaly detection status. + /// + /// Initializes a new instance of . + /// + /// The start point of time range to query enrichment status. + /// The end point of time range to query enrichment status. public GetMetricEnrichmentStatusesOptions(DateTimeOffset startsOn, DateTimeOffset endsOn) { StartsOn = startsOn; EndsOn = endsOn; } - /// the start point of time range to query anomaly detection status. + /// + /// The start point of time range to query enrichment status. + /// public DateTimeOffset StartsOn { get; } - /// the end point of time range to query anomaly detection status. + /// + /// The end point of time range to query enrichment status. + /// public DateTimeOffset EndsOn { get; } /// diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/MetricsAdvisorAdministrationClient.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/MetricsAdvisorAdministrationClient.cs index ccc90e6284a8..802d6188641f 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/MetricsAdvisorAdministrationClient.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/MetricsAdvisorAdministrationClient.cs @@ -14,7 +14,8 @@ namespace Azure.AI.MetricsAdvisor.Administration /// /// The client to use to connect to the Metrics Advisor Cognitive Service to handle administrative /// operations, configuring the behavior of the service. It provides the ability to create and manage - /// data feeds, anomaly detection configurations, anomaly alerting configurations and hooks. + /// data feeds, anomaly detection configurations, anomaly alerting configurations, hooks, and credential + /// entities. /// public class MetricsAdvisorAdministrationClient { diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/MetricsAdvisorClient.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/MetricsAdvisorClient.cs index f5e73983a09a..99c38e1beab5 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/MetricsAdvisorClient.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/MetricsAdvisorClient.cs @@ -347,7 +347,7 @@ Page NextPageFunc(string nextLink, int? pageSizeHint) /// The unique identifier of the . /// The set of options used to configure the request's behavior. /// A controlling the request lifetime. - /// An containing the collection of s. + /// An containing the collection of . /// or is null. /// is empty or not a valid GUID. public virtual AsyncPageable GetMetricSeriesDataAsync(string metricId, GetMetricSeriesDataOptions options, CancellationToken cancellationToken = default) @@ -385,7 +385,7 @@ async Task> FirstPageFunc(int? pageSizeHint) /// The unique identifier of the . /// The set of options used to configure the request's behavior. /// A controlling the request lifetime. - /// A containing the collection of s. + /// A containing the collection of . /// or is null. /// is empty or not a valid GUID. public virtual Pageable GetMetricSeriesData(string metricId, GetMetricSeriesDataOptions options, CancellationToken cancellationToken = default) @@ -417,12 +417,16 @@ Page FirstPageFunc(int? pageSizeHint) } /// - /// + /// Gets the enrichment status for a given metric. Enrichment status is described by the service as the process + /// of detecting which data points of an ingested set of data can be classified as anomalies. Each status represents + /// a single data source ingestion. /// - /// - /// + /// The unique identifier of the . + /// The set of options used to configure the request's behavior. /// A controlling the request lifetime. - /// + /// An containing the collection of . + /// or is null. + /// is empty or not a valid GUID. public virtual AsyncPageable GetMetricEnrichmentStatusesAsync(string metricId, GetMetricEnrichmentStatusesOptions options, CancellationToken cancellationToken = default) { Argument.AssertNotNull(options, nameof(options)); @@ -470,12 +474,16 @@ async Task> NextPageFunc(string nextLink, int? pageSizeHi } /// - /// + /// Gets the enrichment status for a given metric. Enrichment status is described by the service as the process + /// of detecting which data points of an ingested set of data can be classified as anomalies. Each status represents + /// a single data source ingestion. /// - /// - /// + /// The unique identifier of the . + /// The set of options used to configure the request's behavior. /// A controlling the request lifetime. - /// + /// A containing the collection of . + /// or is null. + /// is empty or not a valid GUID. public virtual Pageable GetMetricEnrichmentStatuses(string metricId, GetMetricEnrichmentStatusesOptions options, CancellationToken cancellationToken = default) { Argument.AssertNotNull(options, nameof(options)); diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/MetricsAdvisorClientsOptions.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/MetricsAdvisorClientsOptions.cs index 97bcbfd6aaa5..1c6af0dc8d3c 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/MetricsAdvisorClientsOptions.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/MetricsAdvisorClientsOptions.cs @@ -2,13 +2,14 @@ // Licensed under the MIT License. using System; +using Azure.AI.MetricsAdvisor.Administration; using Azure.Core; namespace Azure.AI.MetricsAdvisor { /// - /// The set of options that can be specified when creating a - /// to configure its behavior. + /// The set of options that can be specified when creating a or + /// a to configure its behavior. /// public class MetricsAdvisorClientsOptions : ClientOptions { diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/AnomalyAlertConfiguration.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/AnomalyAlertConfiguration.cs index 5cf5419c9c29..d1702d994061 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/AnomalyAlertConfiguration.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/AnomalyAlertConfiguration.cs @@ -10,8 +10,18 @@ namespace Azure.AI.MetricsAdvisor.Models { /// - /// Defines the set of rules that must be satisfied by an anomaly before it can trigger an alert. + /// Detected anomalies won't trigger alerts by default, so an must be + /// created if you want to be notified when an anomaly is detected. This configuration is applied to every set + /// of anomalies detected after a ingestion, applying rules that select which of them + /// to include in the final alert. /// + /// + /// In order to create an anomaly alert configuration, you must set up the property and + /// have at least one element in , and pass this instance to the method + /// . Note that, even if alerts are + /// triggered, you won't be notified about them unless you create a and pass its ID + /// to . + /// [CodeGenModel("AnomalyAlertingConfiguration")] [CodeGenSuppress(nameof(AnomalyAlertConfiguration), typeof(string), typeof(IEnumerable), typeof(IEnumerable))] public partial class AnomalyAlertConfiguration @@ -27,46 +37,58 @@ public AnomalyAlertConfiguration() } /// - /// The unique identifier of this . Set by the service. + /// The unique identifier of this . /// + /// + /// If null, it means this instance has not been sent to the service to be created yet. This property + /// will be set by the service after creation. + /// [CodeGenMember("AnomalyAlertingConfigurationId")] public string Id { get; } /// /// A custom name for this to be displayed on fired alerts. + /// Alert configuration names must be unique for the same data feed. /// public string Name { get; set; } /// - /// The unique identifiers of the s that must be notified when an alert is - /// detected by this configuration. + /// The unique identifiers of the s to be notified when an alert is + /// fired by this configuration. /// [CodeGenMember("HookIds")] public IList IdsOfHooksToAlert { get; } /// - /// The configurations that define which anomalies are eligible for triggering an alert. + /// The configurations that specify a set of rules a detected anomaly must satisfy to be included in + /// an alert. /// + /// + /// If you're using at least two metric alert configurations, you need to set the property + /// . + /// [CodeGenMember("MetricAlertingConfigurations")] public IList MetricAlertConfigurations { get; } /// - /// The operator to be applied between s in this - /// instance. This property must be set if more than one - /// configuration is defined in . + /// The operator to be applied between s in this instance. + /// This property must be set if at least two configurations are defined in . /// public MetricAlertConfigurationsOperator? CrossMetricsOperator { get; set; } /// - /// A description of the . + /// A description of this . Defaults to an empty string. /// + /// + /// If set to null during an update operation, this property is set to its default value. + /// public string Description { get; set; } /// - /// By default, an incident only triggers a single alert, regardless of how many anomalies - /// it contains. This property allows this alert to be split into multiple ones. Each element - /// in this list must hold a dimension name, and it creates a new alert from the original one - /// if the corresponding dimension is part of current incident. + /// By default, a set of ingested data points can only trigger a single alert, regardless of + /// how many anomalies it contains. This property allows this alert to be split into multiple ones. + /// Each element in this list must hold a dimension name, and a separate alert is fired for every + /// specified dimension. The dimensions not specified in this list will be grouped in a single alert. /// [CodeGenMember("SplitAlertByDimensions")] public IList DimensionsToSplitAlert { get; } diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/BoundaryDirection.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/BoundaryDirection.cs index 0bc0dd5bca7d..ad1b9b26548f 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/BoundaryDirection.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/BoundaryDirection.cs @@ -6,23 +6,24 @@ namespace Azure.AI.MetricsAdvisor.Models { /// - /// The direction of the boundaries specified by a . + /// Sets the boundaries that delimit the expected value range of a . Data points out + /// of this range can be included in an alert. /// [CodeGenModel("Direction")] public readonly partial struct BoundaryDirection { /// - /// Used when both lower and upper bounds are applied. + /// Any values outside of the expected value range can be included in an alert. /// public static BoundaryDirection Both { get; } = new BoundaryDirection(BothValue); /// - /// Used when only a lower bound is applied. + /// Only values below the expected value range can be included in an alert. /// public static BoundaryDirection Down { get; } = new BoundaryDirection(DownValue); /// - /// Used when only an upper bound is applied. + /// Only values above the expected value range can be included in an alert. /// public static BoundaryDirection Up { get; } = new BoundaryDirection(UpValue); } diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/BoundaryMeasureType.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/BoundaryMeasureType.cs index 2e530b5acd0d..4db41b0fac14 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/BoundaryMeasureType.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/BoundaryMeasureType.cs @@ -6,8 +6,8 @@ namespace Azure.AI.MetricsAdvisor.Models { /// - /// Used as part of a . Specifies which measure type should be - /// used when checking boundaries. Defaults to . + /// Used as part of a . Specifies which measure should be + /// used when checking boundaries. Defaults to . /// [CodeGenModel("ValueType")] public readonly partial struct BoundaryMeasureType diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/MetricAlertConfiguration.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/MetricAlertConfiguration.cs index 3d339e404661..b3fe433aeb68 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/MetricAlertConfiguration.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/MetricAlertConfiguration.cs @@ -7,8 +7,7 @@ namespace Azure.AI.MetricsAdvisor.Models { /// - /// Defines which anomalies detected by an are eligible for - /// triggering an alert. + /// Specifies a set of rules a detected anomaly must satisfy to be included in an alert. /// [CodeGenModel("MetricAlertingConfiguration")] [CodeGenSuppress(nameof(MetricAlertConfiguration), typeof(string), typeof(MetricAnomalyAlertScopeType))] @@ -17,8 +16,11 @@ public partial class MetricAlertConfiguration /// /// Initializes a new instance of the class. /// - /// The identifier of the anomaly detection configuration to which this configuration applies. - /// Selects which set of time series should trigger alerts. + /// + /// The identifier of the to which this configuration applies. An anomaly + /// can only be included in an alert if it was detected by this configuration. + /// + /// Selects the scope of time series in which an anomaly must be to be included in an alert. /// or is null. /// is empty. public MetricAlertConfiguration(string detectionConfigurationId, MetricAnomalyAlertScope alertScope) @@ -44,33 +46,39 @@ internal MetricAlertConfiguration(string detectionConfigurationId, MetricAnomaly } /// - /// The identifier of the anomaly detection configuration to which this configuration applies. + /// The identifier of the to which this configuration applies. + /// An anomaly can only be included in an alert if it was detected by this configuration. /// [CodeGenMember("AnomalyDetectionConfigurationId")] public string DetectionConfigurationId { get; set; } /// - /// Selects which set of time series should trigger alerts. + /// Selects the scope of time series in which an anomaly must be to be included in an alert. /// public MetricAnomalyAlertScope AlertScope { get; set; } /// - /// If defined, this won't trigger alerts by itself. It - /// will only serve as a filter to its containing , specifying - /// which anomalies can trigger an alert. If true, anomalies need to satisfy the conditions - /// set by this filter to trigger an alert. If false, anomalies must not satisfy those - /// conditions. + /// If set to true, this cannot be used to add anomalies + /// to an alert directly. Instead, it will only be used as a filter to its containing + /// , filtering out anomalies that shouldn't be added to the alert. + /// If an anomaly does not satisfy the conditions set by this configuration, it can't be added to the + /// alert. Defaults to false. /// + /// + /// Be aware that, if you set this property to true and have no other configurations in + /// , alerts will never be triggered. + /// [CodeGenMember("NegationOperation")] public bool? UseDetectionResultToFilterAnomalies { get; set; } /// - /// Sets extra conditions that a data point must satisfy to trigger alerts. + /// Sets extra conditions that an anomaly must satisfy to be included in an alert. /// public MetricAnomalyAlertConditions AlertConditions { get; set; } /// - /// Stops alerts temporarily once an alert is triggered. Used to avoid alert spamming. + /// Used to avoid alert spamming. After an anomaly is added to an alert, temporarily prevents new anomalies to + /// be alerted for a specified period. /// [CodeGenMember("SnoozeFilter")] public MetricAnomalyAlertSnoozeCondition AlertSnoozeCondition { get; set; } diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/MetricAlertConfigurationsOperator.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/MetricAlertConfigurationsOperator.cs index aa58982da597..7d1189012e74 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/MetricAlertConfigurationsOperator.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/MetricAlertConfigurationsOperator.cs @@ -13,25 +13,24 @@ namespace Azure.AI.MetricsAdvisor.Models public readonly partial struct MetricAlertConfigurationsOperator { /// - /// The data point will trigger an alert if every defined - /// in is satisfied. Note: If two - /// s have different dimension names, an alert will never - /// be triggered. + /// The anomaly will be included in the alert if the conditions in every + /// are satisfied. Be aware that if two metric alert + /// configurations have no intersection between their scopes, an alert will never be triggered. /// [CodeGenMember("AND")] public static MetricAlertConfigurationsOperator And { get; } = new MetricAlertConfigurationsOperator(AndValue); /// - /// The data point will trigger an alert if at least one - /// defined in is satisfied. + /// The anomaly will be included in the alert if the conditions of at least one + /// are satisfied. /// [CodeGenMember("OR")] public static MetricAlertConfigurationsOperator Or { get; } = new MetricAlertConfigurationsOperator(OrValue); /// - /// It can be used only when there are up to two s defined - /// in . The data point will trigger an alert if exactly one of the - /// configurations is satisfied. + /// This value can only be used when there are exactly two + /// instances defined. The anomaly will be included in the alert if the conditions of exactly one + /// of the configurations are satisfied. /// [CodeGenMember("XOR")] public static MetricAlertConfigurationsOperator Xor { get; } = new MetricAlertConfigurationsOperator(XorValue); diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/MetricAnomalyAlertConditions.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/MetricAnomalyAlertConditions.cs index 0d626fde440e..0f115b63a86a 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/MetricAnomalyAlertConditions.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/MetricAnomalyAlertConditions.cs @@ -4,7 +4,7 @@ namespace Azure.AI.MetricsAdvisor.Models { /// - /// Sets extra conditions that a data point must satisfy to be able to trigger alerts. + /// Sets extra conditions that an anomaly must satisfy to be included in an alert. /// public class MetricAnomalyAlertConditions { @@ -16,13 +16,13 @@ public MetricAnomalyAlertConditions() } /// - /// Sets fixed upper and/or lower bounds to specify the range in which a data point must be - /// to be able to trigger alerts. + /// Sets fixed upper and/or lower bounds to specify the range in which the data point is allowed to be. + /// Points out the specified range can be included in an alert. /// public MetricBoundaryCondition MetricBoundaryCondition { get; set; } /// - /// Sets a range of severity levels in which an anomaly must be to be able to trigger alerts. + /// Sets a range of severity levels in which the anomaly must be to be included in an alert. /// public SeverityCondition SeverityCondition { get; set; } } diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/MetricAnomalyAlertScope.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/MetricAnomalyAlertScope.cs index 52ba578dd0c9..98eeaf1427e1 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/MetricAnomalyAlertScope.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/MetricAnomalyAlertScope.cs @@ -7,8 +7,13 @@ namespace Azure.AI.MetricsAdvisor.Models { /// - /// Selects which set of time series should trigger alerts in a . It - /// must be instantiated by one of its static methods. + /// Selects the scope of time series in which an anomaly must be to be included in an alert. In + /// order to instantiate an object of this class, one of the following static methods must be used: + /// + /// + /// + /// + /// /// public class MetricAnomalyAlertScope { @@ -25,17 +30,21 @@ internal MetricAnomalyAlertScope(MetricAnomalyAlertScopeType scopeType, Dimensio public MetricAnomalyAlertScopeType ScopeType { get; } /// - /// Alerts will only be triggered for anomalies in specific dimensions of the series group. - /// The number of specified dimensions should be smaller than the total number dimensions. - /// This property is set when is . + /// Defines the set of time series included in this scope. If all possible dimensions are set, the + /// key uniquely identifies a single time series for the corresponding metric. If only a subset of + /// dimensions are set, the key uniquely identifies a group of time series. /// + /// + /// This property is only set when is . + /// public DimensionKey SeriesGroupInScope { get; } /// - /// Alerts will only be triggered for anomalies in the top N series. - /// Specify the number of timestamps to take into account, and how many anomalies must be in them to send the alert. - /// This property is set when is . + /// Defines the top N series included in this scope. /// + /// + /// This property is only set when is . + /// public TopNGroupScope TopNGroupInScope { get; } /// @@ -49,8 +58,11 @@ public static MetricAnomalyAlertScope CreateScopeForWholeSeries() => /// /// Creates a instance that has a fixed group of time series as the scope. /// - /// The key that identifies the group of fixed time series that constitutes the scope. - /// A subset of the possible dimensions of the associated data feed must be set. + /// + /// Defines the set of time series included in this scope. If all possible dimensions are set, the + /// key uniquely identifies a single time series for the corresponding metric. If only a subset of + /// dimensions are set, the key uniquely identifies a group of time series. + /// /// A new instance. /// is null. public static MetricAnomalyAlertScope CreateScopeForSeriesGroup(DimensionKey seriesGroupKey) @@ -61,11 +73,15 @@ public static MetricAnomalyAlertScope CreateScopeForSeriesGroup(DimensionKey ser } /// - /// Creates a instance in which alerts will only be triggered for anomalies in the top N series. + /// Creates a instance that has the top N series group as the scope. For a better + /// definition of what this series group is, see . /// - /// The number of timestamps to take into account when choosing the top N series. - /// The number of items a period contains. - /// The number of anomalies that must be in the specified number of timestamps to send an alert. + /// The value of N in the top N series group. + /// The number of latest ingestion timestamps to consider when determining the top N series group. + /// + /// The number of times a time series must be ranked among the highest series to be considered part of the top N series + /// group. This value must be less than or equal to . + /// /// A new instance. public static MetricAnomalyAlertScope CreateScopeForTopNGroup(int top, int period, int minimumTopCount) { diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/MetricAnomalyAlertScopeType.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/MetricAnomalyAlertScopeType.cs index 11504f6c8dd7..68ef8a7cfd05 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/MetricAnomalyAlertScopeType.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/MetricAnomalyAlertScopeType.cs @@ -12,20 +12,19 @@ namespace Azure.AI.MetricsAdvisor.Models public readonly partial struct MetricAnomalyAlertScopeType { /// - /// Alerts will be triggered for anomalies in all series within the metric. + /// The scope includes all time series of the metric. /// [CodeGenMember("All")] public static MetricAnomalyAlertScopeType WholeSeries { get; } = new MetricAnomalyAlertScopeType(WholeSeriesValue); /// - /// Alerts will only be triggered for anomalies in specific dimensions of the series group. + /// The scope only includes a specified set of time series of the metric, defined by a . /// [CodeGenMember("Dimension")] public static MetricAnomalyAlertScopeType SeriesGroup { get; } = new MetricAnomalyAlertScopeType(SeriesGroupValue); /// - /// Alerts will only be triggered for anomalies in the top N series. - /// You can set parameters to specify the number of timestamps to take into account, and how many anomalies must be in them to send the alert. + /// The scope only includes anomalies detected in the top N series. /// public static MetricAnomalyAlertScopeType TopN { get; } = new MetricAnomalyAlertScopeType(TopNValue); } diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/MetricAnomalyAlertSnoozeCondition.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/MetricAnomalyAlertSnoozeCondition.cs index 7eb504aa5680..d02e224a2ee6 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/MetricAnomalyAlertSnoozeCondition.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/MetricAnomalyAlertSnoozeCondition.cs @@ -6,7 +6,8 @@ namespace Azure.AI.MetricsAdvisor.Models { /// - /// Stops alerts temporarily once an alert is triggered. Used to avoid alert spamming. + /// Used to avoid alert spamming. After an anomaly is added to an alert, temporarily prevents new anomalies to + /// be alerted for a specified period. /// [CodeGenModel("AlertSnoozeCondition")] public partial class MetricAnomalyAlertSnoozeCondition @@ -15,8 +16,15 @@ public partial class MetricAnomalyAlertSnoozeCondition /// Initializes a new instance of the class. /// /// The number of data points to be ingested before alerts are enabled again. - /// Defines the set of time series to which this applies. - /// If true, snoozing will stop as soon as a data point that's not an anomaly is found. If false, snoozing only stops when the amount of points specified by have been ingested. + /// + /// Defines the set of time series to which this + /// applies. Anomalies detected out of the specified scope can be added to alerts normally. + /// + /// + /// If true, snoozing only continues as long as the subsequent data points are anomalies. It will stop + /// as soon as a data point that's not an anomaly is found. If false, snoozing only stops when the + /// amount of points specified by have been ingested. + /// public MetricAnomalyAlertSnoozeCondition(int autoSnooze, SnoozeScope snoozeScope, bool isOnlyForSuccessive) { AutoSnooze = autoSnooze; @@ -26,7 +34,7 @@ public MetricAnomalyAlertSnoozeCondition(int autoSnooze, SnoozeScope snoozeScope /// /// Defines the set of time series to which this - /// applies. + /// applies. Anomalies detected out of the specified scope can be added to alerts normally. /// public SnoozeScope SnoozeScope { get; set; } @@ -36,9 +44,9 @@ public MetricAnomalyAlertSnoozeCondition(int autoSnooze, SnoozeScope snoozeScope public int AutoSnooze { get; set; } /// - /// If true, snoozing will stop as soon as a data point that's not an anomaly is found. - /// If false, snoozing only stops when the amount of points specified by - /// have been ingested. + /// If true, snoozing only continues as long as the subsequent data points are anomalies. It will stop + /// as soon as a data point that's not an anomaly is found. If false, snoozing only stops when the + /// amount of points specified by have been ingested. /// [CodeGenMember("OnlyForSuccessive")] public bool IsOnlyForSuccessive { get; set; } diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/MetricBoundaryCondition.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/MetricBoundaryCondition.cs index 19860271a49d..293b2333f227 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/MetricBoundaryCondition.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/MetricBoundaryCondition.cs @@ -6,8 +6,8 @@ namespace Azure.AI.MetricsAdvisor.Models { /// - /// Sets fixed upper and/or lower bounds to specify the range in which a data point must be - /// to be able to trigger alerts. + /// Sets fixed upper and/or lower bounds to specify the range in which a data point is allowed to be. + /// Points out the specified range can be included in an alert. /// [CodeGenModel("ValueCondition")] public partial class MetricBoundaryCondition @@ -15,51 +15,62 @@ public partial class MetricBoundaryCondition /// /// Initializes a new instance of the class. /// - /// The direction of the specified boundaries. Depending on its value, and/or may be required. + /// + /// Sets the boundaries that delimit the expected value range of a . Data points out + /// of this range can be included in an alert. If or + /// , is required. If or + /// , is required. + /// public MetricBoundaryCondition(BoundaryDirection direction) { Direction = direction; } /// - /// The direction of the specified boundaries. Depending on its value, - /// and/or may be required. + /// Sets the boundaries that delimit the expected value range of a . Data points out + /// of this range can be included in an alert. If or + /// , is required. If or + /// , is required. /// public BoundaryDirection Direction { get; set; } /// - /// The minimum value a data point can assume to be able to trigger an alert. Must be set if - /// is or - /// . + /// The minimum value of the boundary where a data point is allowed to be. If below this value, the point can be + /// included in an alert. Must be set if is or + /// . /// [CodeGenMember("Lower")] public double? LowerBound { get; set; } /// - /// The maximum value a data point can assume to be able to trigger an alert. Must be set if - /// is or - /// . + /// The maximum value of the boundary where a data point is allowed to be. If above this value, the point can be + /// included in an alert. Must be set if is or + /// . /// [CodeGenMember("Upper")] public double? UpperBound { get; set; } /// - /// If set, this will make use of the value of another - /// metric, specified by this ID, when checking boundaries. + /// If set, this will make use of the value of another metric, specified + /// by this ID, when checking boundaries. A data point of the companion metric with same dimensions and same + /// timestamp will be used instead and, if out of range, the current data point can be included in an alert. + /// You can set the property to tell the service what to do when + /// the data point in the companion metric is missing. /// [CodeGenMember("MetricId")] public string CompanionMetricId { get; set; } /// - /// This property must be set if is defined. If true, - /// an alert should be triggered if the targeted metric is missing for the current timestamp. - /// If false, no action is taken in this scenario. + /// This property can be used when is defined to tell the service what to do when + /// the data point in the companion metric is missing. If true, the current point can still be included in + /// an alert when the data point in the companion metric is missing. If false, the current point won't be + /// included. Defaults to false. /// [CodeGenMember("TriggerForMissing")] public bool? ShouldAlertIfDataPointMissing { get; set; } /// - /// Specifies which measure type should be used when checking boundaries. Defaults to + /// Specifies which measure should be used when checking boundaries. Defaults to /// . /// [CodeGenMember("Type")] diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/SeverityCondition.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/SeverityCondition.cs index 7ad8e25f7aa1..0948a272d281 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/SeverityCondition.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/SeverityCondition.cs @@ -6,15 +6,15 @@ namespace Azure.AI.MetricsAdvisor.Models { /// - /// Sets a range of severity levels in which an anomaly must be to be able to trigger alerts. + /// Sets a range of severity levels in which an anomaly must be to be included in an alert. /// public partial class SeverityCondition { /// /// Initializes a new instance of the class. /// - /// The minimum severity an anomaly must have to trigger alerts. - /// The maximum severity an anomaly must have to trigger alerts. + /// The minimum severity an anomaly must have to be included in an alert. + /// The maximum severity an anomaly must have to be included in an alert. public SeverityCondition(AnomalySeverity minimumAlertSeverity, AnomalySeverity maximumAlertSeverity) { MinimumAlertSeverity = minimumAlertSeverity; @@ -22,13 +22,13 @@ public SeverityCondition(AnomalySeverity minimumAlertSeverity, AnomalySeverity m } /// - /// The minimum severity an anomaly must have to be able to trigger alerts. + /// The minimum severity an anomaly must have to be included in an alert. /// [CodeGenMember("MinAlertSeverity")] public AnomalySeverity MinimumAlertSeverity { get; set; } /// - /// The maximum severity an anomaly must have to be able to trigger alerts. + /// The maximum severity an anomaly must have to be included in an alert /// [CodeGenMember("MaxAlertSeverity")] public AnomalySeverity MaximumAlertSeverity { get; set; } diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/SnoozeScope.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/SnoozeScope.cs index 4617dd0cd123..8d067879b17d 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/SnoozeScope.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/SnoozeScope.cs @@ -5,18 +5,17 @@ namespace Azure.AI.MetricsAdvisor.Models { /// /// Defines the set of time series to which a - /// applies. + /// applies. Anomalies detected out of the specified scope can be added to alerts normally. /// public readonly partial struct SnoozeScope { /// - /// The snooze will apply to all time series within the metric that generated the - /// current alert. + /// The snooze will apply to all time series within the metric of the alerted anomaly. /// public static SnoozeScope Metric { get; } = new SnoozeScope(MetricValue); /// - /// The snooze will only apply to the time series that generated the current alert. + /// The snooze will only apply to the time series of the alerted anomaly. /// public static SnoozeScope Series { get; } = new SnoozeScope(SeriesValue); } diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/TopNGroupScope.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/TopNGroupScope.cs index 104c40c47948..414105fd7397 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/TopNGroupScope.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AlertTriggering/TopNGroupScope.cs @@ -6,9 +6,18 @@ namespace Azure.AI.MetricsAdvisor.Models { /// - /// Alerts will only be triggered for anomalies in the top N series. - /// Use to specify the number of timestamps to take into account, and - /// to specify how many anomalies must be in them to send the alert. + /// A scope containing only the top N series group. The service determines whether a time series is part of this group + /// or not by following the algorithm below: + /// + /// + /// The service ranks every time series by data point value. A separate rank is done for each of the latest ingestion + /// timestamps. The amount of timestamps to consider is defined by the property. + /// + /// + /// If a time series is ranked among the top N series in M different timestamps, it is considered part of the top N + /// series group. N can be set with the property, and M with . + /// + /// /// public partial class TopNGroupScope { @@ -29,17 +38,18 @@ internal TopNGroupScope(int top, int period, int minimumTopCount) } /// - /// The number of timestamps to take into account. + /// The value of N in the top N series group. /// public int Top { get; set; } /// - /// The number of items a period contains. + /// The number of latest ingestion timestamps to consider when determining the top N series group. /// public int Period { get; set; } /// - /// The number of anomalies that must be in the specified number of timestamps to send an alert. + /// The number of times a time series must be ranked among the highest series to be considered part of + /// the top N series group. This value must be less than or equal to . /// [CodeGenMember("MinTopCount")] public int MinimumTopCount { get; set; } diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/AnomalyDetectionConfiguration.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/AnomalyDetectionConfiguration.cs index cf6bb7365bfc..d9abbc8b5648 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/AnomalyDetectionConfiguration.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/AnomalyDetectionConfiguration.cs @@ -2,15 +2,26 @@ // Licensed under the MIT License. using System.Collections.Generic; +using Azure.AI.MetricsAdvisor.Administration; using Azure.Core; namespace Azure.AI.MetricsAdvisor.Models { /// - /// Defines which data points of a metric should be considered an anomaly. A - /// can only be applied to a single metric within a data feed, but it can have multiple conditions applied to different time - /// series within the same metric. + /// Every time a new data point is ingested by a , it must go through an + /// . This configuration is responsible for determining whether the new + /// point is an anomaly or not. As soon as a data feed is created, the Metrics Advisor service creates a default + /// configuration, named "Default", for each one of its metrics, and configures them to make use of the + /// , a detection method powered by machine learning. You can always create new + /// configurations or modify existing ones to better suit your needs. /// + /// + /// In order to create an anomaly detection configuration, you must set up at least the properties , + /// , and , and pass this instance to the method + /// . Note that a detection configuration + /// only detects anomalies, and is not responsible for triggering alerts. If you want alerts to be triggered, you need to + /// create an . + /// [CodeGenModel("AnomalyDetectionConfiguration")] [CodeGenSuppress(nameof(AnomalyDetectionConfiguration), typeof(string), typeof(string), typeof(MetricWholeSeriesDetectionCondition))] public partial class AnomalyDetectionConfiguration @@ -25,46 +36,60 @@ public AnomalyDetectionConfiguration() } /// - /// The unique identifier of this . Set by the service. + /// The unique identifier of this . /// + /// + /// If null, it means this instance has not been sent to the service to be created yet. This property + /// will be set by the service after creation. + /// [CodeGenMember("AnomalyDetectionConfigurationId")] public string Id { get; } /// - /// The identifier of the metric to which this configuration applies. + /// The identifier of the to which this configuration applies. /// + /// + /// After creating a , you can get the IDs of all of your metrics from the property + /// . + /// public string MetricId { get; set; } /// /// A custom name for this to be displayed on the web portal. + /// Detection configuration names must be unique for the same metric. /// public string Name { get; set; } /// - /// The default anomaly detection conditions to be applied to all series associated with this configuration's - /// . + /// The default anomaly detection conditions to be applied to all time series. Be aware that these are only + /// default conditions. They will only be applied to a new data point if the lists + /// and do not specify conditions for the point's time series. /// [CodeGenMember("WholeMetricConfiguration")] public MetricWholeSeriesDetectionCondition WholeSeriesDetectionConditions { get; set; } /// - /// The anomaly detection conditions to be applied to the time series associated with this configuration's - /// . These conditions overwrite the ones specified by . + /// The anomaly detection conditions to be applied to groups of time series. Be aware that these are only + /// default conditions. They will only be applied to a new data point if the list + /// does not specify conditions for the point's time series. Also, note that these conditions overwrite the ones + /// specified by . /// [CodeGenMember("DimensionGroupOverrideConfigurations")] public IList SeriesGroupDetectionConditions { get; } /// - /// The anomaly detection conditions to be applied to the time series associated with this configuration's - /// . These conditions overwrite the ones specified by - /// and . + /// The anomaly detection conditions to be applied to a time series. Note that these conditions overwrite the ones + /// specified by and . /// [CodeGenMember("SeriesOverrideConfigurations")] public IList SeriesDetectionConditions { get; } /// - /// A description about the . + /// A description of this . Defaults to an empty string. /// + /// + /// If set to null during an update operation, this property is set to its default value. + /// public string Description { get; set; } /// diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/AnomalyDetectorDirection.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/AnomalyDetectorDirection.cs index 23adacf88952..9bb1a66b5274 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/AnomalyDetectorDirection.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/AnomalyDetectorDirection.cs @@ -4,23 +4,23 @@ namespace Azure.AI.MetricsAdvisor.Models { /// - /// The direction of the boundaries specified by an anomaly detection condition or a - /// . + /// Sets the boundaries that delimit the expected value range of an anomaly detection condition. Data points out + /// of this range are considered anomalous. /// public readonly partial struct AnomalyDetectorDirection { /// - /// Used when both lower and upper bounds are applied. + /// Any values out of the expected value range will be considered anomalies. /// public static AnomalyDetectorDirection Both { get; } = new AnomalyDetectorDirection(BothValue); /// - /// Used when only a lower bound is applied. + /// Only values below the expected value range will be considered anomalies. /// public static AnomalyDetectorDirection Down { get; } = new AnomalyDetectorDirection(DownValue); /// - /// Used when only an upper bound is applied. + /// Only values above the expected value range will be considered anomalies. /// public static AnomalyDetectorDirection Up { get; } = new AnomalyDetectorDirection(UpValue); } diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/ChangeThresholdCondition.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/ChangeThresholdCondition.cs index 285e79ad5728..c017c3a4fe99 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/ChangeThresholdCondition.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/ChangeThresholdCondition.cs @@ -7,21 +7,30 @@ namespace Azure.AI.MetricsAdvisor.Models { /// - /// A condition used for anomaly detection. Using the value of a previously ingested data - /// point as reference, sets bounds to specify the range in which data points are expected - /// to be. Points with unexpected values will be considered an anomaly according to the - /// rules set by the . + /// Normally used when metric values stay around a certain range. The threshold is set according to the percentage of change. + /// The following scenarios are appropriate for this type of anomaly detection condition: + /// + /// Your data is normally stable and smooth. You want to be notified when there are fluctuations. + /// Your data is normally quite unstable and fluctuates a lot. You want to be notified when it becomes too stable or flat. + /// /// public partial class ChangeThresholdCondition { /// /// Initializes a new instance of the class. /// - /// Compared to the previous point, the current point is an anomaly if the percentage of change is more than this value. + /// The percentage of change, compared to the previous point, that delimits the boundary for detecting anomalous points. /// When set to N, sets as reference the data point that's N positions before the current point. Value must be at least 1. - /// Sets whether to detect data within the range or outside the range. - /// A point is considered an anomaly only when the deviation occurs in the specified direction. - /// The to be applied to every unexpected data point. + /// + /// If true, points inside the boundary are considered anomalous (ideal for detecting flat lines and stable values). + /// If false, only points outside of the boundary can be considered anomalies (ideal for detecting fluctuations). + /// + /// + /// Sets the boundaries that delimit the expected value range. When is true, can only + /// be set to . Otherwise, can only be set to + /// or . + /// + /// The to be applied to every anomalous data point. /// is null. public ChangeThresholdCondition(double changePercentage, int shiftPoint, bool withinRange, AnomalyDetectorDirection anomalyDetectorDirection, SuppressCondition suppressCondition) { @@ -41,23 +50,27 @@ public ChangeThresholdCondition(double changePercentage, int shiftPoint, bool wi public int ShiftPoint { get; set; } /// - /// Compared to the previous point, the current point is an anomaly if the percentage of change is more than this value. + /// The percentage of change, compared to the previous point, that delimits the boundary for detecting anomalous points. /// public double ChangePercentage { get; set; } /// - /// Sets whether to detect data within the range or outside the range. If you want to detect fluctuations, select false. - /// If you want to detect flat lines in your data, select true. + /// If true, points inside the boundary are considered anomalous (ideal for detecting + /// flat lines and stable values). If false, only points outside of the boundary can be considered anomalies (ideal + /// for detecting fluctuations). See to check which boundaries are supported for each + /// case. /// public bool WithinRange { get; set; } /// - /// A point is considered an anomaly only when the deviation occurs in the specified direction. + /// Sets the boundaries that delimit the expected value range. When is true, can only + /// be set to . Otherwise, can only be set to + /// or . /// public AnomalyDetectorDirection AnomalyDetectorDirection { get; set; } /// - /// The to be applied to every unexpected data point. + /// The to be applied to every anomalous data point. /// public SuppressCondition SuppressCondition { get; set; } diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/HardThresholdCondition.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/HardThresholdCondition.cs index 9520bb377b38..031302931ccf 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/HardThresholdCondition.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/HardThresholdCondition.cs @@ -7,17 +7,21 @@ namespace Azure.AI.MetricsAdvisor.Models { /// - /// A condition used for anomaly detection. Sets fixed upper and/or lower bounds to specify - /// the range in which data points are expected to be. Points with unexpected values will be - /// considered an anomaly according to the rules set by the . + /// Sets fixed upper and/or lower bounds to specify the range in which data points are expected to be. + /// Values outside of upper or lower bounds will be considered to be anomalous. /// public partial class HardThresholdCondition { /// /// Initializes a new instance of the class. /// - /// The direction of the specified boundaries. Depending on its value, and/or may be required. - /// The to be applied to every unexpected data point. + /// + /// Sets the boundaries that delimit the expected value range. Data points out of this range are considered anomalous. + /// If or , + /// is required. If or , + /// is required. + /// + /// The to be applied to every anomalous data point. /// is null. public HardThresholdCondition(AnomalyDetectorDirection anomalyDetectorDirection, SuppressCondition suppressCondition) { @@ -28,13 +32,15 @@ public HardThresholdCondition(AnomalyDetectorDirection anomalyDetectorDirection, } /// - /// The direction of the specified boundaries. Depending on its value, - /// and/or may be required. + /// Sets the boundaries that delimit the expected value range. Data points out of this range are considered anomalous. + /// If or , + /// is required. If or , + /// is required. /// public AnomalyDetectorDirection AnomalyDetectorDirection { get; set; } /// - /// The to be applied to every unexpected data point. + /// The to be applied to every anomalous data point. /// public SuppressCondition SuppressCondition { get; set; } diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/MetricEnrichedSeriesData.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/MetricEnrichedSeriesData.cs index 9a3363e77b8d..34bafe37d107 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/MetricEnrichedSeriesData.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/MetricEnrichedSeriesData.cs @@ -65,7 +65,7 @@ internal MetricEnrichedSeriesData(SeriesIdentity series, IReadOnlyList /// The period of every data point in this time series, measured in amount of - /// points. + /// points. Used to describe seasonal data. /// [CodeGenMember("PeriodList")] public IReadOnlyList Periods { get; } diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/MetricWholeSeriesDetectionCondition.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/MetricWholeSeriesDetectionCondition.cs index f0335b889235..9a4934e850ee 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/MetricWholeSeriesDetectionCondition.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/MetricWholeSeriesDetectionCondition.cs @@ -20,25 +20,45 @@ public MetricWholeSeriesDetectionCondition() /// /// The operator to be applied between conditions in this - /// instance. This property must be set if at least two conditions properties in this instance are defined. + /// instance. This property must be set if at least two conditions in this instance are defined. /// public DetectionConditionOperator? ConditionOperator { get; set; } /// - /// Configures anomaly detection using multiple machine learning algorithms. + /// A detection condition powered by machine learning that learns patterns from historical data, and uses them + /// for future detection. /// + /// + /// If set to null during an Update operation, this condition is removed from the configuration. + /// If you're using other detection conditions in addition to this one, you need to set the property + /// . + /// public SmartDetectionCondition SmartDetectionCondition { get; set; } /// /// Sets fixed upper and/or lower bounds to specify the range in which data points are expected to be. - /// Values outside of upper or lower bounds are anomalies. + /// Values outside of upper or lower bounds will be considered to be anomalous. /// + /// + /// If set to null during an Update operation, this condition is removed from the configuration. + /// If you're using other detection conditions in addition to this one, you need to set the property + /// . + /// public HardThresholdCondition HardThresholdCondition { get; set; } /// - /// Using the value of a previously ingested data point as reference, sets bounds to specify the range in - /// which data points are expected to be. + /// Normally used when metric values stay around a certain range. The threshold is set according to the percentage of change. + /// The following scenarios are appropriate for this type of anomaly detection condition: + /// + /// Your data is normally stable and smooth. You want to be notified when there are fluctuations. + /// Your data is normally quite unstable and fluctuates a lot. You want to be notified when it becomes too stable or flat. + /// /// + /// + /// If set to null during an Update operation, this condition is removed from the configuration. + /// If you're using other detection conditions in addition to this one, you need to set the property + /// . + /// public ChangeThresholdCondition ChangeThresholdCondition { get; set; } internal WholeMetricConfigurationPatch GetPatchModel() => new WholeMetricConfigurationPatch() diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/SmartDetectionCondition.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/SmartDetectionCondition.cs index aebcd7635cc3..6fcedbdf7d56 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/SmartDetectionCondition.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/SmartDetectionCondition.cs @@ -7,19 +7,21 @@ namespace Azure.AI.MetricsAdvisor.Models { /// - /// Anomaly detection using multiple machine learning algorithms. + /// A detection condition powered by machine learning that learns patterns from historical data, and uses them for future detection. /// public partial class SmartDetectionCondition { /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// /// /// A numerical value to adjust the tolerance of the anomaly detection with a range of (0, 100]. - /// Visually, the higher the value, the narrower the upper and lower boundaries around the time series. + /// It affects the width of the expected value range of each point. When increased, the expected + /// value range will be tighter, and more anomalies will be reported. When turned down, the expected + /// value range will be wider, and fewer anomalies will be reported. /// - /// detection direction. - /// The to be applied to every unexpected data point. + /// Sets the boundaries that delimit the expected value range. Data points out of this range are considered anomalous. + /// The to be applied to every anomalous data point. /// is null. public SmartDetectionCondition(double sensitivity, AnomalyDetectorDirection anomalyDetectorDirection, SuppressCondition suppressCondition) { @@ -32,17 +34,19 @@ public SmartDetectionCondition(double sensitivity, AnomalyDetectorDirection anom /// /// A numerical value to adjust the tolerance of the anomaly detection with a range of (0, 100]. - /// Visually, the higher the value, the narrower the upper and lower boundaries around the time series. + /// It affects the width of the expected value range of each point. When increased, the expected + /// value range will be tighter, and more anomalies will be reported. When turned down, the expected + /// value range will be wider, and fewer anomalies will be reported. /// public double Sensitivity { get; set; } /// - /// A point is an anomaly only when the deviation occurs in the specified direction. + /// Sets the boundaries that delimit the expected value range. Data points out of this range are considered anomalous. /// public AnomalyDetectorDirection AnomalyDetectorDirection { get; set; } /// - /// The to be applied to every unexpected data point. + /// The to be applied to every anomalous data point. /// public SuppressCondition SuppressCondition { get; set; } diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/SuppressCondition.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/SuppressCondition.cs index 3fee6e6747b5..aa57c21b2418 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/SuppressCondition.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/AnomalyDetection/SuppressCondition.cs @@ -6,18 +6,26 @@ namespace Azure.AI.MetricsAdvisor.Models { /// - /// Every time a time series ingests a new data point, the service takes a look at the latest - /// points for that series. If the amount of unexpected points exceeds a specified threshold, - /// then the latest point that caused this will be labeled as an anomaly. A - /// instance is used to configure this behavior. + /// Sometimes it's inconvenient to treat every data point outside of an expected range as an anomaly. Transient + /// fluctuations may occur depending on the nature of the data being monitored. A suppress condition makes it + /// possible to ignore an initial group of anomalous points, treating them as normal, and start detecting + /// anomalies only when a specified threshold is exceeded. As soon as a new anomalous data point is detected, + /// the service peeks at the latest ingested points of the time series it belongs. If the amount of anomalous + /// points exceed a specified ratio, the current point will be labeled as an anomaly. /// public partial class SuppressCondition { /// /// Initializes a new instance of the class. /// - /// The amount of data points to consider when looking back on the previously ingested data. Must include the most recent point, so value must be at least 1. - /// The minimum percentage of unexpected values that must be present in the latest ingested data points to detect an anomaly. Value is between (0, 100]. + /// + /// The amount of data points to peek at when looking back on the previously ingested data. + /// Must include the most recent point, so value must be at least 1. + /// + /// + /// The minimum percentage of anomalous values that must be present in the latest ingested data + /// points to consider the current point an anomaly. Value is between (0, 100]. + /// public SuppressCondition(int minimumNumber, double minimumRatio) { MinimumNumber = minimumNumber; @@ -25,15 +33,15 @@ public SuppressCondition(int minimumNumber, double minimumRatio) } /// - /// The amount of data points to consider when looking back on the previously ingested data. + /// The amount of data points to peek at when looking back on the previously ingested data. /// Must include the most recent point, so value must be at least 1. /// [CodeGenMember("MinNumber")] public int MinimumNumber { get; set; } /// - /// The minimum percentage of unexpected values that must be present in the latest ingested - /// data points to detect an anomaly. Value is between (0, 100]. + /// The minimum percentage of anomalous values that must be present in the latest ingested + /// data points to consider the current point an anomaly. Value is between (0, 100]. /// [CodeGenMember("MinRatio")] public double MinimumRatio { get; set; } diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/Credential/DataLakeSharedKeyCredentialEntity.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/Credential/DataLakeSharedKeyCredentialEntity.cs index 1c386ee6bcbb..92b3133f3698 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/Credential/DataLakeSharedKeyCredentialEntity.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/Credential/DataLakeSharedKeyCredentialEntity.cs @@ -11,6 +11,10 @@ namespace Azure.AI.MetricsAdvisor.Administration /// /// Authenticates to a Data Lake Storage Gen2 resource via shared key. /// + /// + /// In order to create a credential entity, you must pass this instance to the method + /// . + /// [CodeGenModel("DataLakeGen2SharedKeyCredential")] [CodeGenSuppress(nameof(DataLakeSharedKeyCredentialEntity), typeof(string), typeof(DataLakeGen2SharedKeyParam))] public partial class DataLakeSharedKeyCredentialEntity diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/Credential/DataSourceCredentialEntity.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/Credential/DataSourceCredentialEntity.cs index 4e1b678d5265..36bf1b9d51e1 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/Credential/DataSourceCredentialEntity.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/Credential/DataSourceCredentialEntity.cs @@ -37,20 +37,28 @@ internal DataSourceCredentialEntity(string name) public DataSourceCredentialKind CredentialKind { get; internal set; } /// - /// The unique identifier of this . Set by the service. + /// The unique identifier of this . /// + /// + /// If null, it means this instance has not been sent to the service to be created yet. This property + /// will be set by the service after creation. + /// [CodeGenMember("DataSourceCredentialId")] public string Id { get; } /// - /// A custom unique name for this to be displayed on the web portal. + /// A custom name for this to be displayed on the web portal. Data feed + /// names must be unique across the same Metris Advisor resource. /// [CodeGenMember("DataSourceCredentialName")] public string Name { get; set; } /// - /// A description of this . + /// A description of this . Defaults to an empty string. /// + /// + /// If set to null during an update operation, this property is set to its default value. + /// [CodeGenMember("DataSourceCredentialDescription")] public string Description { get; set; } diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/Credential/ServicePrincipalCredentialEntity.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/Credential/ServicePrincipalCredentialEntity.cs index 4aad62951910..37d222f5e8fb 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/Credential/ServicePrincipalCredentialEntity.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/Credential/ServicePrincipalCredentialEntity.cs @@ -11,6 +11,10 @@ namespace Azure.AI.MetricsAdvisor.Administration /// /// Authenticates to an Azure service via service principal. /// + /// + /// In order to create a credential entity, you must pass this instance to the method + /// . + /// [CodeGenModel("ServicePrincipalCredential")] [CodeGenSuppress(nameof(ServicePrincipalCredentialEntity), typeof(string), typeof(ServicePrincipalParam))] public partial class ServicePrincipalCredentialEntity diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/Credential/ServicePrincipalInKeyVaultCredentialEntity.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/Credential/ServicePrincipalInKeyVaultCredentialEntity.cs index 20ab60d5481f..54edee98c765 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/Credential/ServicePrincipalInKeyVaultCredentialEntity.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/Credential/ServicePrincipalInKeyVaultCredentialEntity.cs @@ -13,6 +13,10 @@ namespace Azure.AI.MetricsAdvisor.Administration /// authentication must be stored as secrets in a Key Vault resource, so credentials to access this Key Vault instance /// must also be provided. /// + /// + /// In order to create a credential entity, you must pass this instance to the method + /// . + /// [CodeGenModel("ServicePrincipalInKVCredential")] [CodeGenSuppress(nameof(ServicePrincipalInKeyVaultCredentialEntity), typeof(string), typeof(ServicePrincipalInKVParam))] public partial class ServicePrincipalInKeyVaultCredentialEntity diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/Credential/SqlConnectionStringCredentialEntity.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/Credential/SqlConnectionStringCredentialEntity.cs index a663607a23eb..7f66730aab92 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/Credential/SqlConnectionStringCredentialEntity.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/Credential/SqlConnectionStringCredentialEntity.cs @@ -11,6 +11,10 @@ namespace Azure.AI.MetricsAdvisor.Administration /// /// Authenticates to an SQL server via connection string. /// + /// + /// In order to create a credential entity, you must pass this instance to the method + /// . + /// [CodeGenModel("AzureSQLConnectionStringCredential")] [CodeGenSuppress(nameof(SqlConnectionStringCredentialEntity), typeof(string), typeof(AzureSQLConnectionStringParam))] public partial class SqlConnectionStringCredentialEntity diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeed.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeed.cs index 6d21399dbf04..d3a1367f4e1b 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeed.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeed.cs @@ -10,9 +10,16 @@ namespace Azure.AI.MetricsAdvisor.Models { /// - /// Periodically ingests data from a data source in order to build time series - /// to be monitored for anomaly detection. + /// A data feed is the entry point of data for the Metrics Advisor service and, therefore, the first + /// entity to be created when setting up your resource. It periodically ingests data from a + /// and monitors it in search of anomalies. /// + /// + /// In order to create a data feed, you must set up at least the properties , + /// , , , and + /// , and pass this instance to the method + /// . + /// public class DataFeed { /// @@ -47,18 +54,31 @@ internal DataFeed(DataFeedDetail dataFeedDetail) } /// - /// The unique identifier of this . Set by the service. + /// The unique identifier of this . /// + /// + /// If null, it means this instance has not been sent to the service to be created yet. This property + /// will be set by the service after creation. + /// public string Id { get; internal set; } /// - /// The current ingestion status of this . + /// The current ingestion status of this . Only + /// and are supported. /// + /// + /// If null, it means this instance has not been sent to the service to be created yet. Once created, + /// the status is initialized as . + /// public DataFeedStatus? Status { get; } /// - /// Date and time, in UTC, when this was created. + /// The date and time, in UTC, when this was created. /// + /// + /// If null, it means this instance has not been sent to the service to be created yet. This property + /// will be set by the service after creation. + /// public DateTimeOffset? CreatedOn { get; } /// @@ -68,73 +88,110 @@ internal DataFeed(DataFeedDetail dataFeedDetail) /// creator's user principal, but its value depends on the type of credential used. For instance, if a /// ClientSecretCredential is used, it will contain the client ID. /// + /// + /// If null, it means this instance has not been sent to the service to be created yet. This property + /// will be set by the service after creation. + /// public string Creator { get; } /// /// Whether or not the user who queried the information about this - /// is one of its administrators. + /// is one of its administrators. The complete list of administrators can be consulted in + /// . /// + /// + /// If null, it means this instance has not been sent to the service to be created yet. + /// public bool? IsAdministrator { get; } /// - /// The unique identifiers of the metrics defined in this feed's . - /// Set by the service. + /// The unique identifiers of the metrics of this . Keys are the metric + /// names, and values are their corresponding IDs. /// + /// + /// If empty, it means this instance has not been sent to the service to be created yet. + /// public IReadOnlyDictionary MetricIds { get; } /// - /// A custom name for this to be displayed on the web portal. + /// A custom name for this to be displayed on the web portal. Data feed names + /// must be unique across the same Metris Advisor resource. /// public string Name { get; set; } /// - /// The source from which data is consumed. + /// The source that periodically provides data to this . /// + /// + /// Once the data feed is created, the kind of cannot be changed anymore. + /// You can, however, update its properties. + /// public DataFeedSource DataSource { get; set; } /// - /// Defines how this structures the data ingested from the data source - /// in terms of metrics and dimensions. + /// Specifies which values, such as metrics and dimensions, will be ingested from the . /// + /// + /// Once the data feed is created, the metrics and dimensions defined in the schema cannot be changed + /// anymore. You can still update the property . + /// public DataFeedSchema Schema { get; set; } /// - /// The frequency with which ingestion from the data source will happen. + /// The frequency with which ingestion from the will happen. /// + /// + /// Once the data feed is created, this property cannot be changed anymore. + /// public DataFeedGranularity Granularity { get; set; } /// - /// Configures how a behaves during data ingestion from its data source. + /// Configures how a should ingest data from its . /// public DataFeedIngestionSettings IngestionSettings { get; set; } /// - /// A description of this . + /// A description of this . Defaults to an empty string. /// + /// + /// If set to null during an update operation, this property is set to its default value. + /// public string Description { get; set; } /// /// Defines actionable HTTP URLs, which consist of the placeholders %datafeed, %metric, %timestamp, %detect_config, and %tagset. /// You can use the template to redirect from an anomaly or an incident to a specific URL to drill down. - /// See the documentation for details. + /// See the documentation for details. + /// Defaults to an empty string. /// + /// + /// If set to null during an update operation, this property is set to its default value. + /// public string ActionLinkTemplate { get; set; } /// - /// The access mode for this . + /// The access mode for this . Only + /// and are supported. Defaults to . /// + /// + /// If set to null during an update operation, this property is set to its default value. + /// public DataFeedAccessMode? AccessMode { get; set; } /// - /// Configures the behavior of this for rolling-up the ingested data + /// Configures the behavior of this when handling rolled-up ingested data /// before detecting anomalies. /// public DataFeedRollupSettings RollupSettings { get; set; } /// - /// Configures the behavior of this when dealing with missing points - /// in the data ingested from the data source. + /// Configures the behavior of this when handling missing points in the + /// data ingested from the . Defaults to settings with + /// set. /// + /// + /// If set to null during an update operation, this property is set to its default value. + /// public DataFeedMissingDataPointFillSettings MissingDataPointFillSettings { get; set; } /// @@ -145,6 +202,9 @@ internal DataFeed(DataFeedDetail dataFeedDetail) /// user's email address. If AAD authentication will be used instead, the string must uniquely identify the user's /// principal. For instance, for a ClientSecretCredential, the string must be the client ID. /// + /// + /// Upon data feed creation, the is automatically assigned as an administrator by the service. + /// public IList Administrators { get; } /// diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedAccessMode.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedAccessMode.cs index c0cc20bccc4a..d68d20d11fa7 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedAccessMode.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedAccessMode.cs @@ -6,7 +6,7 @@ namespace Azure.AI.MetricsAdvisor.Models { /// - /// The view mode of the . + /// The access mode of the . /// [CodeGenModel("ViewMode")] public readonly partial struct DataFeedAccessMode diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedDimension.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedDimension.cs index edf970d4304a..5e7eb700bb6f 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedDimension.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedDimension.cs @@ -2,13 +2,14 @@ // Licensed under the MIT License. using System; +using Azure.AI.MetricsAdvisor.Administration; using Azure.Core; namespace Azure.AI.MetricsAdvisor.Models { /// - /// A is one or more categorical values. The combination of those values identify a particular univariate time series. - /// For example: country, language, tenant, and so on. + /// A categorical value that characterizes the metrics of a . The combination of multiple dimensions + /// identify a particular univariate time series. /// [CodeGenModel("Dimension")] public partial class DataFeedDimension @@ -16,7 +17,7 @@ public partial class DataFeedDimension /// /// Initializes a new instance of the class. /// - /// The name of the data source's column to be used as a dimension. Values of this dimension will be read only from the specified column. + /// The name of the dimension as it appears in its corresponding column. /// is null. /// is empty. public DataFeedDimension(string name) @@ -27,15 +28,17 @@ public DataFeedDimension(string name) } /// - /// The name of the data source's column to be used as a dimension. Values of - /// this dimension will be read only from the specified column. + /// The name of the dimension as it appears in its corresponding column. /// [CodeGenMember("DimensionName")] public string Name { get; } /// - /// The name to be displayed on the web portal instead of the original column name. + /// The dimension name to be displayed on the web portal. Defaults to the original column name, . /// + /// + /// Once the containing this dimension is created, this property cannot be changed anymore. + /// [CodeGenMember("DimensionDisplayName")] public string DisplayName { get; set; } } diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedGranularity.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedGranularity.cs index fa107593d873..a88f4e05839b 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedGranularity.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedGranularity.cs @@ -1,10 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +using Azure.AI.MetricsAdvisor.Administration; + namespace Azure.AI.MetricsAdvisor.Models { /// - /// The frequency with which ingestion from the data source will occur. + /// The frequency with which ingestion from a will occur. /// public class DataFeedGranularity { @@ -24,7 +26,8 @@ internal DataFeedGranularity(DataFeedDetail dataFeedDetail) } /// - /// The type of . + /// The type of . must be set when + /// this property is set to . /// public DataFeedGranularityType GranularityType { get; } @@ -32,6 +35,9 @@ internal DataFeedGranularity(DataFeedDetail dataFeedDetail) /// The custom granularity value, in seconds. This property must be set if /// is . /// + /// + /// Once the data feed is created, this property cannot be changed anymore. + /// public int? CustomGranularityValue { get; set; } } } diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedIngestionSettings.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedIngestionSettings.cs index 0add061ede4e..f5d8f6ddd2b7 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedIngestionSettings.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedIngestionSettings.cs @@ -2,18 +2,19 @@ // Licensed under the MIT License. using System; +using Azure.AI.MetricsAdvisor.Administration; namespace Azure.AI.MetricsAdvisor.Models { /// - /// Configures how a behaves during data ingestion from its data source. + /// Configures how a should ingest data from its . /// public class DataFeedIngestionSettings { /// /// Initializes a new instance of the class. /// - /// The starting point in time from which data will be ingested from the data source. Subsequent ingestions happen periodically according to the data feed's granularity. + /// The starting point in time from which data will be ingested from the data source. Subsequent ingestions happen periodically according to the . public DataFeedIngestionSettings(DateTimeOffset ingestionStartsOn) { IngestionStartsOn = ingestionStartsOn; @@ -36,33 +37,49 @@ internal DataFeedIngestionSettings(DataFeedDetail dataFeedDetail) /// /// The starting point in time from which data will be ingested from the data source. Subsequent - /// ingestions happen periodically according to the data feed's granularity. + /// ingestions happen periodically according to the . /// public DateTimeOffset IngestionStartsOn { get; set; } /// - /// If the specified data source supports limited concurrency, this can be set to specify the - /// maximum limit. + /// If the associated supports limited concurrency, this can be set to specify + /// the maximum limit. Defaults to -1 (limited concurrency not supported). /// + /// + /// If set to null during an update operation, this property is set to its default value. + /// public int? DataSourceRequestConcurrency { get; set; } /// /// The minimum delay between two consecutive retry attempts, in case data ingestion - /// fails. If not specified, the service's behavior depends on the data feed's granularity. - /// See the documentation for details. + /// fails. If not specified, defaults to -1 seconds, and the service's behavior depends + /// on the . See the + /// documentation for details. /// + /// + /// If set to null during an update operation, this property is set to its default value. + /// public TimeSpan? IngestionRetryDelay { get; set; } /// /// An offset to change the next expected data ingestion start times. It can be /// used to delay (if positive) or to advance (if negative) the ingestion start - /// time. + /// time. Defaults to . /// + /// + /// If set to null during an update operation, this property is set to its default value. + /// public TimeSpan? IngestionStartOffset { get; set; } /// /// Specifies the maximum amount of time in which to attempt a retry if ingestion fails. + /// If not specified, defaults to -1 seconds, and the service's behavior depends on the + /// . See the + /// documentation for details. /// + /// + /// If set to null during an update operation, this property is set to its default value. + /// public TimeSpan? StopRetryAfter { get; set; } } } diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedMetric.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedMetric.cs index ed811e3ed7ce..a8f91f587754 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedMetric.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedMetric.cs @@ -2,14 +2,14 @@ // Licensed under the MIT License. using System; +using Azure.AI.MetricsAdvisor.Administration; using Azure.Core; namespace Azure.AI.MetricsAdvisor.Models { /// - /// A is a quantifiable measure that is used to monitor and assess the status of a specific business process. - /// It can be a combination of multiple time series values divided into dimensions. - /// For example, a web health metric might contain dimensions for user count in a specific market. + /// A quantifiable measure used to monitor and assess the status of a specific business process. The service will monitor + /// how this value varies over time in search of any anomalous behavior. /// [CodeGenModel("Metric")] public partial class DataFeedMetric @@ -17,7 +17,7 @@ public partial class DataFeedMetric /// /// Initializes a new instance of the class. /// - /// The name of the data source's column with numeric values to be used as a metric. Values of this metric will be read only from the specified column. + /// The name of the metric as it appears in its corresponding column. /// is null. /// is empty. public DataFeedMetric(string name) @@ -28,27 +28,36 @@ public DataFeedMetric(string name) } /// - /// The unique identifier of this . Set by the service. + /// The unique identifier of this . /// + /// + /// If null, it means the containing this metric has not been sent to + /// the service to be created yet. This property will be set by the service after creation. + /// [CodeGenMember("MetricId")] public string Id { get; } /// - /// The name of the data source's column with numeric values to be used as a metric. Values - /// of this metric will be read only from the specified column. + /// The name of the metric as it appears in its corresponding column. /// [CodeGenMember("MetricName")] public string Name { get; } /// - /// The name to be displayed on the web portal instead of the original column name. + /// The metric name to be displayed on the web portal. Defaults to the original column name, . /// + /// + /// Once the containing this metric is created, this property cannot be changed anymore. + /// [CodeGenMember("MetricDisplayName")] public string DisplayName { get; set; } /// /// A description of what the values in this represent. /// + /// + /// Once the containing this metric is created, this property cannot be changed anymore. + /// [CodeGenMember("MetricDescription")] public string Description { get; set; } } diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedMissingDataPointFillSettings.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedMissingDataPointFillSettings.cs index 11e096c290c2..23563db92a9e 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedMissingDataPointFillSettings.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedMissingDataPointFillSettings.cs @@ -1,11 +1,13 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +using Azure.AI.MetricsAdvisor.Administration; + namespace Azure.AI.MetricsAdvisor.Models { /// - /// Configures the behavior of a when dealing with missing points in - /// the data ingested from the data source. + /// Configures the behavior of a when handling missing points in + /// the data ingested from its . /// public class DataFeedMissingDataPointFillSettings { @@ -27,7 +29,8 @@ internal DataFeedMissingDataPointFillSettings(DataFeedDetail dataFeedDetail) } /// - /// The strategy used when filling a missing point. + /// The strategy used when filling a missing point. must be set when + /// this property is set to . /// public DataFeedMissingDataPointFillType FillType { get; set; } diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedMissingDataPointFillType.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedMissingDataPointFillType.cs index 2faa52ab7191..3531991a1ec6 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedMissingDataPointFillType.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedMissingDataPointFillType.cs @@ -23,7 +23,7 @@ public readonly partial struct DataFeedMissingDataPointFillType public static DataFeedMissingDataPointFillType PreviousValue { get; } = new DataFeedMissingDataPointFillType(PreviousValueValue); /// - /// The data point is set to a predefined custom value. This value can be set with + /// The data point is set to a predefined custom value. This value must be set with /// . /// public static DataFeedMissingDataPointFillType CustomValue { get; } = new DataFeedMissingDataPointFillType(CustomValueValue); diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedRollupSettings.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedRollupSettings.cs index eeccc2cf26eb..aa1713af6bba 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedRollupSettings.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedRollupSettings.cs @@ -7,7 +7,7 @@ namespace Azure.AI.MetricsAdvisor.Models { /// - /// Configures the behavior of a for rolling-up the ingested + /// Configures the behavior of a when handling rolled-up ingested /// data before detecting anomalies. /// public class DataFeedRollupSettings @@ -29,25 +29,38 @@ internal DataFeedRollupSettings(DataFeedDetail dataFeedDetail) } /// - /// The value a dimension assumes when it represents a rolled-up value in the original data source. - /// Must be set when is . + /// The value a dimension assumes when it represents a rolled-up value. Must be set when + /// is or . /// public string RollupIdentificationValue { get; set; } /// /// The strategy used by this when rolling-up the ingested data before detecting - /// anomalies. + /// anomalies. Defaults to . If the type is set to + /// , both and + /// must be set. If the type is , + /// only must be set. /// + /// + /// If set to null during an update operation, this property is set to its default value. + /// public DataFeedRollupType? RollupType { get; set; } /// /// The roll-up method the service should apply to the ingested data for anomaly detection. This property - /// must be set if is . + /// must be set if is . Defaults to + /// . /// + /// + /// If set to null during an update operation, this property is set to its default value. + /// public DataFeedAutoRollupMethod? AutoRollupMethod { get; set; } /// - /// Defines the column names to which these will apply. + /// Can be used when is . + /// Specifies which dimensions should be rolled-up by the service. If no dimensions are specified, + /// all of them will be used. Be aware that you must specify the dimensions' display names, otherwise + /// operation will fail. /// public IList AutoRollupGroupByColumnNames { get; } } diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedRollupType.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedRollupType.cs index d9bd5cbb224c..be9f99005a19 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedRollupType.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedRollupType.cs @@ -19,7 +19,9 @@ public readonly partial struct DataFeedRollupType public static DataFeedRollupType NoRollupNeeded { get; } = new DataFeedRollupType(NoRollupNeededValue); /// - /// Let the service do the roll-up. The method can be set with . + /// Let the service do the roll-up. The roll-up method must be set with + /// , and the rolled-up dimension value with + /// . /// [CodeGenMember("NeedRollup")] public static DataFeedRollupType RollupNeeded { get; } = new DataFeedRollupType(RollupNeededValue); @@ -27,7 +29,7 @@ public readonly partial struct DataFeedRollupType /// /// The data source already provides rolled-up values, and the service should use them. /// must be set to help the - /// service identify the rolled-up data. + /// service identify which dimension value corresponds to the rolled-up data. /// [CodeGenMember("AlreadyRollup")] public static DataFeedRollupType AlreadyRolledUp { get; } = new DataFeedRollupType(AlreadyRolledUpValue); diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedSchema.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedSchema.cs index dcc1d7207c92..a06560a4c4fd 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedSchema.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedSchema.cs @@ -1,17 +1,19 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -using System; using System.Collections.Generic; +using Azure.AI.MetricsAdvisor.Administration; using Azure.Core; namespace Azure.AI.MetricsAdvisor.Models { /// - /// Defines how a structures the data ingested from the data source in terms - /// of metrics and dimensions. This schema defines how many time series are generated for anomaly - /// detection. + /// Specifies which values, such as metrics and dimensions, will be ingested from the . /// + /// + /// At least one metric must be added to when creating a , + /// otherwise the creation operation will fail. Other properties are optional. + /// public class DataFeedSchema { /// @@ -31,22 +33,33 @@ internal DataFeedSchema(DataFeedDetail dataFeedDetail) } /// - /// The metrics ingested from the data source. The values of these metrics are - /// monitored in search of anomalies. Cannot be empty. + /// The metrics used to monitor and assess the status of specific business processes. The service will monitor + /// how these values vary over time in search of any anomalous behavior. /// + /// + /// At least one metric must be added to this property when creating a , otherwise the + /// creation operation will fail. Once the data feed containing this schema is created, this property cannot + /// be changed anymore. + /// public IList MetricColumns { get; } /// - /// The dimensions ingested from the data source. Given a metric, for each set of - /// values this set of dimensions can assume, one time series is generated and - /// monitored in search of anomalies. + /// The dimensions ingested from the data source. Given a metric, for each set of values these dimensions can + /// assume, one time series is generated in the service and monitored in search of anomalies. /// + /// + /// Once the data feed containing this schema is created, this property cannot be changed anymore. + /// public IList DimensionColumns { get; } /// - /// The name of the data source's column with date or string values to be used as timestamp. - /// If not specified, the time when a data point is ingested will be used instead. + /// The name of column of the with date or string values to be used as timestamp. + /// If not specified, the value of this property defaults to an empty string, and the start time of each data + /// ingestion will be used instead. /// + /// + /// If set to null during an update operation, this property is set to its default value. + /// public string TimestampColumn { get; set; } } } diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedSource.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedSource.cs index d70adb128abc..7a4cc67ade82 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedSource.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedSource.cs @@ -8,7 +8,23 @@ namespace Azure.AI.MetricsAdvisor.Administration { /// - /// Ingests data into a for anomaly detection. + /// The source that periodically provides data to a . The service + /// accepts tables of aggregated data. The supported data feed sources are: + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// /// public abstract class DataFeedSource { diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedStatus.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedStatus.cs index 89f6409a2380..c9e26b4c7b84 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedStatus.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/DataFeed/DataFeedStatus.cs @@ -12,12 +12,13 @@ namespace Azure.AI.MetricsAdvisor.Models public readonly partial struct DataFeedStatus { /// - /// The is active. + /// The is active and able to ingest data. /// public static DataFeedStatus Active { get; } = new DataFeedStatus(ActiveValue); /// - /// The is paused. + /// The is paused and data ingestion won't take place + /// until activated again. /// public static DataFeedStatus Paused { get; } = new DataFeedStatus(PausedValue); } diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/AnomalyValue.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/AnomalyValue.cs new file mode 100644 index 000000000000..cbae685cfd10 --- /dev/null +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/AnomalyValue.cs @@ -0,0 +1,28 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +namespace Azure.AI.MetricsAdvisor.Models +{ + /// + /// Used by to indicate whether or not a set of data points should + /// have been labeled as anomalies by the service. + /// + public readonly partial struct AnomalyValue + { + /// + /// Tells the service to disregard any previous anomaly feedback given to the set of data + /// points affected. + /// + public static AnomalyValue AutoDetect { get; } = new AnomalyValue(AutoDetectValue); + + /// + /// The data points should have been labeled as anomalies. + /// + public static AnomalyValue Anomaly { get; } = new AnomalyValue(AnomalyValue1); + + /// + /// The data points should not have been labeled as anomalies. + /// + public static AnomalyValue NotAnomaly { get; } = new AnomalyValue(NotAnomalyValue); + } +} diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/ChangePointValue.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/ChangePointValue.cs new file mode 100644 index 000000000000..497721318399 --- /dev/null +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/ChangePointValue.cs @@ -0,0 +1,28 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +namespace Azure.AI.MetricsAdvisor.Models +{ + /// + /// Used by to indicate whether or not a set of data points should + /// be considered change points by the service. + /// + public readonly partial struct ChangePointValue + { + /// + /// Tells the service to disregard any previous change point feedback given to the set of data + /// points affected. + /// + public static ChangePointValue AutoDetect { get; } = new ChangePointValue(AutoDetectValue); + + /// + /// The data points should have been labeled as change points. + /// + public static ChangePointValue ChangePoint { get; } = new ChangePointValue(ChangePointValue1); + + /// + /// The data points should not have been labeled as change points. + /// + public static ChangePointValue NotChangePoint { get; } = new ChangePointValue(NotChangePointValue); + } +} diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/MetricAnomalyFeedback.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/MetricAnomalyFeedback.cs index 01532bec9d58..22ac3503c0ac 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/MetricAnomalyFeedback.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/MetricAnomalyFeedback.cs @@ -8,9 +8,13 @@ namespace Azure.AI.MetricsAdvisor { /// - /// Feedback indicating that the point was incorrectly labeled by the service. - /// You can specify whether a point should or shouldn't be an anomaly. + /// Feedback indicating that a data point was incorrectly labeled by the service. + /// You can specify whether a point should or shouldn't be an anomaly with /// + /// + /// In order to create anomaly feedback, you must pass this instance to the method + /// . + /// [CodeGenModel("AnomalyFeedback")] [CodeGenSuppress(nameof(MetricAnomalyFeedback), typeof(string), typeof(FeedbackFilter))] public partial class MetricAnomalyFeedback : MetricFeedback @@ -27,7 +31,7 @@ public partial class MetricAnomalyFeedback : MetricFeedback /// /// The start timestamp of feedback time range. /// The end timestamp of feedback time range. When this is equal to it indicates a single timestamp. - /// The for the feedback. + /// Indicates whether or not the data points should have been labeled as anomalies by the service. /// or is null. /// is empty. public MetricAnomalyFeedback(string metricId, DimensionKey dimensionKey, DateTimeOffset startsOn, DateTimeOffset endsOn, AnomalyValue value) @@ -91,7 +95,7 @@ internal MetricAnomalyFeedback(string metricId, FeedbackFilter feedbackFilter, D public AnomalyDetectionConfiguration DetectionConfigurationSnapshot { get; } /// - /// The for the feedback. + /// Indicates whether or not the data points should have been labeled as anomalies by the service. /// public AnomalyValue AnomalyValue => ValueInternal.AnomalyValue; diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/MetricChangePointFeedback.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/MetricChangePointFeedback.cs index a0e0156a7b08..8c48e4c9c275 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/MetricChangePointFeedback.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/MetricChangePointFeedback.cs @@ -8,8 +8,15 @@ namespace Azure.AI.MetricsAdvisor { /// - /// Feedback indicating that this is the start of a trend change. + /// Sometimes the trend change of data will affect anomaly detection results. When a decision is made as to whether + /// a point is an anomaly or not, the latest window of history data will be taken into consideration. When your time + /// series has a trend change, you could mark the exact change point, this will help our anomaly detector in future + /// analysis. /// + /// + /// In order to create change point feedback, you must pass this instance to the method + /// . + /// [CodeGenModel("ChangePointFeedback")] [CodeGenSuppress(nameof(MetricChangePointFeedback), typeof(string), typeof(FeedbackFilter))] public partial class MetricChangePointFeedback : MetricFeedback @@ -26,7 +33,7 @@ public partial class MetricChangePointFeedback : MetricFeedback /// /// The start timestamp of feedback time range. /// The end timestamp of feedback time range. When this is equal to it indicates a single timestamp. - /// The for the feedback. + /// Indicate whether or not the data points should be considered change points by the service. /// or is null. /// is empty. public MetricChangePointFeedback(string metricId, DimensionKey dimensionKey, DateTimeOffset startsOn, DateTimeOffset endsOn, ChangePointValue value) @@ -68,7 +75,7 @@ internal MetricChangePointFeedback(string metricId, FeedbackFilter feedbackFilte public DateTimeOffset EndsOn { get; } /// - /// The for the feedback. + /// Indicate whether or not the data points should be considered change points by the service. /// public ChangePointValue ChangePointValue => ValueInternal.ChangePointValue; diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/MetricCommentFeedback.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/MetricCommentFeedback.cs index 74374c4bde84..f941ae99408d 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/MetricCommentFeedback.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/MetricCommentFeedback.cs @@ -7,7 +7,14 @@ namespace Azure.AI.MetricsAdvisor { - /// The CommentFeedback. + /// + /// Adds comments to annotate and provide context to your data. This has no impact in the process of + /// detecting anomalies. + /// + /// + /// In order to create comment feedback, you must pass this instance to the method + /// . + /// [CodeGenModel("CommentFeedback")] [CodeGenSuppress(nameof(MetricCommentFeedback), typeof(string), typeof(FeedbackFilter))] public partial class MetricCommentFeedback : MetricFeedback diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/MetricFeedback.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/MetricFeedback.cs index e501384761f5..c739a2d3a8b6 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/MetricFeedback.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/MetricFeedback.cs @@ -61,8 +61,12 @@ internal MetricFeedback(MetricFeedbackKind kind, string id, DateTimeOffset? crea public MetricFeedbackKind FeedbackKind { get; internal set; } /// - /// The unique identifier of the . Set by the service. + /// The unique identifier of this . /// + /// + /// If null, it means this instance has not been sent to the service to be created yet. This property + /// will be set by the service after creation. + /// [CodeGenMember("FeedbackId")] public string Id { get; } @@ -79,6 +83,10 @@ internal MetricFeedback(MetricFeedbackKind kind, string id, DateTimeOffset? crea /// creator's user principal, but its value depends on the type of credential used. For instance, if a /// ClientSecretCredential is used, it will contain the client ID. /// + /// + /// If null, it means this instance has not been sent to the service to be created yet. This property + /// will be set by the service after creation. + /// public string UserPrincipal { get; } /// diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/MetricPeriodFeedback.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/MetricPeriodFeedback.cs index 89c88181225f..96d842661867 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/MetricPeriodFeedback.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/MetricPeriodFeedback.cs @@ -8,8 +8,15 @@ namespace Azure.AI.MetricsAdvisor { /// - /// Feedback indicating that this is an interval of seasonality. + /// For seasonal data, when performing anomaly detection, one step is to estimate the period (seasonality) of the time series, + /// and apply it to the anomaly detection phase. Sometimes, it's hard to identify a precise period, and the period may also + /// change. An incorrectly defined period may have side effects on the anomaly detection results. This class allows providing + /// feedback for a period to fix this kind of anomaly detection error. /// + /// + /// In order to create period feedback, you must pass this instance to the method + /// . + /// [CodeGenModel("PeriodFeedback")] [CodeGenSuppress(nameof(MetricPeriodFeedback), typeof(string), typeof(FeedbackFilter))] public partial class MetricPeriodFeedback : MetricFeedback @@ -24,8 +31,8 @@ public partial class MetricPeriodFeedback : MetricFeedback /// for the specified . If only a subset of dimensions are set, this /// key uniquely identifies a group of time series. /// - /// The . - /// The period value. + /// Tells the service how to determine the period of the seasonal data. + /// The expected value of the period, measured in amount of data points. 0 means non-seasonal data. /// or is null. /// is empty. public MetricPeriodFeedback(string metricId, DimensionKey dimensionKey, MetricPeriodType periodType, int periodValue) @@ -53,12 +60,12 @@ internal MetricPeriodFeedback(string metricId, FeedbackFilter feedbackFilter, Pe } /// - /// The . + /// Tells the service how to determine the period of the seasonal data. /// public MetricPeriodType PeriodType => ValueInternal.PeriodType; /// - /// The period value. + /// The expected value of the period, measured in amount of data points. 0 means non-seasonal data. /// public int PeriodValue => ValueInternal.PeriodValue; diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/MetricPeriodType.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/MetricPeriodType.cs index f60b0cc41a2d..02adf997e182 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/MetricPeriodType.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/MetricFeedback/MetricPeriodType.cs @@ -5,8 +5,23 @@ namespace Azure.AI.MetricsAdvisor.Models { + /// + /// Used by to tell the service how to determine the period of a + /// seasonal set of data points. + /// [CodeGenModel("PeriodType")] public readonly partial struct MetricPeriodType { + /// + /// Tells the service to disregard any previous period feedback given to the set of data + /// points affected. + /// + public static MetricPeriodType AutoDetect { get; } = new MetricPeriodType(AutoDetectValue); + + /// + /// The data points have their period assigned according to the + /// provided. + /// + public static MetricPeriodType AssignValue { get; } = new MetricPeriodType(AssignValueValue); } } diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/NotificationHook/EmailNotificationHook.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/NotificationHook/EmailNotificationHook.cs index b90dbd49ade5..c24d380ca2c0 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/NotificationHook/EmailNotificationHook.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/NotificationHook/EmailNotificationHook.cs @@ -8,9 +8,14 @@ namespace Azure.AI.MetricsAdvisor.Administration { /// - /// An email hook is the channel for anomaly alerts to be sent to email addresses specified in the Email to section. - /// Two types of alert emails will be sent: Data feed not available alerts, and Incident reports which contain one or multiple anomalies. + /// An email hook is the channel for anomaly alerts to be sent to e-mail addresses. In order to be notified when + /// an alert is fired, you must create an and pass its ID to an + /// . /// + /// + /// In order to create an e-mail hook, you must add at least one e-mail address to , + /// and pass this instance to the method . + /// [CodeGenModel("EmailHookInfo")] [CodeGenSuppress(nameof(EmailNotificationHook), typeof(string), typeof(EmailHookParameter))] public partial class EmailNotificationHook : NotificationHook diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/NotificationHook/NotificationHook.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/NotificationHook/NotificationHook.cs index a9719c496212..7246ba65eec6 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/NotificationHook/NotificationHook.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/NotificationHook/NotificationHook.cs @@ -10,7 +10,13 @@ namespace Azure.AI.MetricsAdvisor.Administration { /// - /// An alert notification to be triggered after an anomaly is detected by Metrics Advisor. + /// Alert notifications are not sent by default. In order to be notified when an alert is fired, you must + /// create a and pass its ID to an . + /// The supported hooks are: + /// + /// + /// + /// /// [CodeGenModel("HookInfo")] public abstract partial class NotificationHook @@ -34,13 +40,18 @@ internal NotificationHook(NotificationHookKind hookType, string id, string name, } /// - /// The unique identifier for the hook. + /// The unique identifier of this . /// + /// + /// If null, it means this instance has not been sent to the service to be created yet. This property + /// will be set by the service after creation. + /// [CodeGenMember("HookId")] public string Id { get; } /// - /// The name of the hook. + /// A custom name for this to be displayed on the web portal. Hook names + /// must be unique across the same Metris Advisor resource. /// [CodeGenMember("HookName")] public string Name { get; set; } @@ -53,6 +64,9 @@ internal NotificationHook(NotificationHookKind hookType, string id, string name, /// must uniquely identify the user's principal. For instance, for a ClientSecretCredential, the string must be /// the client ID. /// + /// + /// Upon hook creation, the creator user is automatically assigned as an administrator by the service. + /// [CodeGenMember("Admins")] public IList Administrators { get; } @@ -63,13 +77,20 @@ internal NotificationHook(NotificationHookKind hookType, string id, string name, public NotificationHookKind HookKind { get; internal set; } /// - /// The hook description. + /// A description of this . Defaults to an empty string. /// + /// + /// If set to null during an update operation, this property is set to its default value. + /// public string Description { get; set; } /// /// Optional field which enables a customized redirect, such as for troubleshooting notes. + /// Defaults to an empty string. /// + /// + /// If set to null during an update operation, this property is set to its default value. + /// public Uri ExternalUri { get; set; } /// diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/NotificationHook/WebNotificationHook.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/NotificationHook/WebNotificationHook.cs index 83de599dd986..f65ea4d87bf5 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/NotificationHook/WebNotificationHook.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/NotificationHook/WebNotificationHook.cs @@ -9,9 +9,17 @@ namespace Azure.AI.MetricsAdvisor.Administration { /// - /// A webhook is the entry point for all the information available from the Metrics Advisor service, and calls a user-provided API when an alert is triggered. - /// All alerts can be sent through a webhook. + /// A web hook is a notification channel that uses an endpoint provided by the customer. In order to be + /// notified when an alert is fired, you must create a and pass its + /// ID to an . Check the + /// documentation for more details about the alerts sent. /// + /// + /// In order to create a web hook, you must pass this instance to the method + /// . When a web hook is created or modified, + /// the will be called as a test with an empty request body. Your API needs to return + /// a 200 HTTP code to successfully pass the validation. + /// [CodeGenModel("WebhookHookInfo")] [CodeGenSuppress(nameof(WebNotificationHook), typeof(string), typeof(WebhookHookParameter))] public partial class WebNotificationHook : NotificationHook @@ -49,22 +57,38 @@ internal WebNotificationHook(NotificationHookKind hookType, string id, string na /// /// The username for authenticating to the API address. Leave this blank if authentication isn't needed. + /// Defaults to an empty string. /// + /// + /// If set to null during an update operation, this property is set to its default value. + /// public string Username { get; set; } /// /// The password for authenticating to the API address. Leave this blank if authentication isn't needed. + /// Defaults to an empty string. /// + /// + /// If set to null during an update operation, this property is set to its default value. + /// public string Password { get; set; } /// /// The certificate key for authenticating to the API address. Leave this blank if authentication isn't needed. + /// Defaults to an empty string. /// + /// + /// If set to null during an update operation, this property is set to its default value. + /// public string CertificateKey { get; set; } /// /// The certificate password for authenticating to the API address. Leave this blank if authentication isn't needed. + /// Defaults to an empty string. /// + /// + /// If set to null during an update operation, this property is set to its default value. + /// public string CertificatePassword { get; set; } /// diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/TimeSeries/EnrichmentStatus.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/TimeSeries/EnrichmentStatus.cs index c340a1c5ee8d..bf1651edbc81 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/TimeSeries/EnrichmentStatus.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/src/Models/TimeSeries/EnrichmentStatus.cs @@ -5,16 +5,28 @@ namespace Azure.AI.MetricsAdvisor.Models { - /// The EnrichmentStatus. + /// + /// The enrichment status of a metric. Enrichment status is described by the service as the process + /// of detecting which data points of an ingested set of data can be classified as anomalies. An + /// instance of this class represents the status of a single data source ingestion. + /// public partial class EnrichmentStatus { - /// Data slice timestamp. + /// + /// The date and time, in UTC, of the enrichment attempt. + /// public DateTimeOffset Timestamp { get; } - /// Latest enrichment status for this data slice. + /// + /// The enrichment status for this . This is the status of the + /// latest attempt. + /// public string Status { get; } - /// The trimmed message describes details of the enrichment status. + /// + /// A message created by the service with additional information about the latest + /// enrichment attempt. + /// public string Message { get; } } } diff --git a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/tests/MetricsAdvisorAdministrationClient/AnomalyDetectionConfigurationLiveTests.cs b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/tests/MetricsAdvisorAdministrationClient/AnomalyDetectionConfigurationLiveTests.cs index 1182aaf93095..a83d6095c6ef 100644 --- a/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/tests/MetricsAdvisorAdministrationClient/AnomalyDetectionConfigurationLiveTests.cs +++ b/sdk/metricsadvisor/Azure.AI.MetricsAdvisor/tests/MetricsAdvisorAdministrationClient/AnomalyDetectionConfigurationLiveTests.cs @@ -606,7 +606,7 @@ public async Task UpdateSmartDetectionConditionWithNullSetsToDefault() { LowerBound = 1.0 }, - CrossConditionsOperator = DetectionConditionsOperator.And + ConditionOperator = DetectionConditionOperator.And } }; @@ -643,7 +643,7 @@ public async Task UpdateHardThresholdConditionWithNullSetsToDefault() { LowerBound = 1.0 }, - CrossConditionsOperator = DetectionConditionsOperator.And + ConditionOperator = DetectionConditionOperator.And } }; @@ -677,7 +677,7 @@ public async Task UpdateChangeThresholdConditionWithNullSetsToDefault() new SuppressCondition(1, 1.0)), ChangeThresholdCondition = new ChangeThresholdCondition(1.0, 1, false, AnomalyDetectorDirection.Down, new SuppressCondition(1, 1.0)), - CrossConditionsOperator = DetectionConditionsOperator.And + ConditionOperator = DetectionConditionOperator.And } };