public async Task AddFeedbackAsync() { string endpoint = MetricsAdvisorUri; string subscriptionKey = MetricsAdvisorSubscriptionKey; string apiKey = MetricsAdvisorApiKey; var credential = new MetricsAdvisorKeyCredential(subscriptionKey, apiKey); var client = new MetricsAdvisorClient(new Uri(endpoint), credential); string metricId = MetricId; var dimensions = new Dictionary <string, string>() { { "region", "Karachi" } }; var dimensionKey = new DimensionKey(dimensions); var startsOn = DateTimeOffset.Parse("2020-02-01T00:00:00Z"); var endsOn = DateTimeOffset.Parse("2020-02-03T00:00:00Z"); // Other types of feedback, such as MetricCommentFeedback, MetricChangePointFeedback, // and MetricPeriodFeedback are supported as well. var anomalyFeedback = new MetricAnomalyFeedback(metricId, dimensionKey, startsOn, endsOn, AnomalyValue.NotAnomaly); Response <MetricFeedback> response = await client.AddFeedbackAsync(anomalyFeedback); MetricFeedback addedFeedback = response.Value; Console.WriteLine($"Feedback ID: {addedFeedback.Id}"); }
public async Task AddFeedbackAsync() { string endpoint = MetricsAdvisorUri; string subscriptionKey = MetricsAdvisorSubscriptionKey; string apiKey = MetricsAdvisorApiKey; var credential = new MetricsAdvisorKeyCredential(subscriptionKey, apiKey); var client = new MetricsAdvisorClient(new Uri(endpoint), credential); string metricId = MetricId; FeedbackDimensionFilter filter = new FeedbackDimensionFilter(); filter.DimensionFilter.AddDimensionColumn("city", "Belo Horizonte"); var startTime = DateTimeOffset.Parse("2020-02-01T00:00:00Z"); var endTime = DateTimeOffset.Parse("2020-02-03T00:00:00Z"); // Other types of feedback, such as MetricCommentFeedback, MetricChangePointFeedback, // and MetricPeriodFeedback are supported as well. var anomalyFeedback = new MetricAnomalyFeedback(metricId, filter, startTime, endTime, AnomalyValue.NotAnomaly); Response <MetricFeedback> response = await client.AddFeedbackAsync(anomalyFeedback); MetricFeedback addedFeedback = response.Value; Console.WriteLine($"Feedback ID: {addedFeedback.Id}"); }
public async Task AddAndGetAnomalyFeedbackWithOptionalDetectionConfigurationFilter() { MetricsAdvisorClient client = GetMetricsAdvisorClient(); var dimensionKey = new DimensionKey(); dimensionKey.AddDimensionColumn("city", "Delhi"); dimensionKey.AddDimensionColumn("category", "Handmade"); var filter = new FeedbackDimensionFilter(dimensionKey); var feedbackToAdd = new MetricAnomalyFeedback(MetricId, filter, CreatedFeedbackStartTime, CreatedFeedbackEndTime, AnomalyValue.AutoDetect) { AnomalyDetectionConfigurationId = DetectionConfigurationId }; string feedbackId = await client.AddFeedbackAsync(feedbackToAdd); Assert.That(feedbackId, Is.Not.Null); MetricFeedback addedFeedback = await client.GetFeedbackAsync(feedbackId); ValidateMetricFeedback(addedFeedback, feedbackId, dimensionKey); Assert.That(addedFeedback.Type, Is.EqualTo(FeedbackType.Anomaly)); var anomalyFeedback = addedFeedback as MetricAnomalyFeedback; Assert.That(anomalyFeedback, Is.Not.Null); Assert.That(anomalyFeedback.AnomalyValue, Is.EqualTo(AnomalyValue.AutoDetect)); Assert.That(anomalyFeedback.StartTime, Is.EqualTo(CreatedFeedbackStartTime)); Assert.That(anomalyFeedback.EndTime, Is.EqualTo(CreatedFeedbackEndTime)); Assert.That(anomalyFeedback.AnomalyDetectionConfigurationId, Is.EqualTo(DetectionConfigurationId)); // TODO: Add snapshot validation (https://github.com/azure/azure-sdk-for-net/issues/15915) }
public async Task AddAndGetAnomalyFeedbackWithMinimumSetup(bool useTokenCredential) { MetricsAdvisorClient client = GetMetricsAdvisorClient(useTokenCredential); var dimensionKey = new DimensionKey(); dimensionKey.AddDimensionColumn("city", "Delhi"); dimensionKey.AddDimensionColumn("category", "Handmade"); var filter = new FeedbackDimensionFilter(dimensionKey); var feedbackToAdd = new MetricAnomalyFeedback(MetricId, filter, CreatedFeedbackStartTime, CreatedFeedbackEndTime, AnomalyValue.AutoDetect); string feedbackId = await client.AddFeedbackAsync(feedbackToAdd); Assert.That(feedbackId, Is.Not.Null); MetricFeedback addedFeedback = await client.GetFeedbackAsync(feedbackId); ValidateMetricFeedback(addedFeedback, feedbackId, dimensionKey); Assert.That(addedFeedback.Type, Is.EqualTo(FeedbackType.Anomaly)); var anomalyFeedback = addedFeedback as MetricAnomalyFeedback; Assert.That(anomalyFeedback, Is.Not.Null); Assert.That(anomalyFeedback.AnomalyValue, Is.EqualTo(AnomalyValue.AutoDetect)); Assert.That(anomalyFeedback.StartTime, Is.EqualTo(CreatedFeedbackStartTime)); Assert.That(anomalyFeedback.EndTime, Is.EqualTo(CreatedFeedbackEndTime)); Assert.That(anomalyFeedback.AnomalyDetectionConfigurationId, Is.Null); Assert.That(anomalyFeedback.AnomalyDetectionConfigurationSnapshot, Is.Null); }
public async Task AddAndGetAnomalyFeedbackWithOptionalDetectionConfigurationFilter() { MetricsAdvisorClient client = GetMetricsAdvisorClient(); var dimensions = new Dictionary <string, string>() { { "region", ExpectedRegion }, { "category", ExpectedCategory } }; var dimensionKey = new DimensionKey(dimensions); var feedbackToAdd = new MetricAnomalyFeedback(MetricId, dimensionKey, CreatedFeedbackStartTime, CreatedFeedbackEndTime, AnomalyValue.AutoDetect) { DetectionConfigurationId = DetectionConfigurationId }; MetricFeedback addedFeedback = await client.AddFeedbackAsync(feedbackToAdd); ValidateMetricFeedback(addedFeedback); Assert.That(addedFeedback.FeedbackKind, Is.EqualTo(MetricFeedbackKind.Anomaly)); var anomalyFeedback = addedFeedback as MetricAnomalyFeedback; Assert.That(anomalyFeedback, Is.Not.Null); Assert.That(anomalyFeedback.AnomalyValue, Is.EqualTo(AnomalyValue.AutoDetect)); Assert.That(anomalyFeedback.StartsOn, Is.EqualTo(CreatedFeedbackStartTime)); Assert.That(anomalyFeedback.EndsOn, Is.EqualTo(CreatedFeedbackEndTime)); Assert.That(anomalyFeedback.UserPrincipal, Is.Not.Null.And.Not.Empty); Assert.That(anomalyFeedback.DetectionConfigurationId, Is.EqualTo(DetectionConfigurationId)); // TODO: Add snapshot validation (https://github.com/azure/azure-sdk-for-net/issues/15915) }
public async Task AddAndGetAnomalyFeedbackWithMinimumSetup(bool useTokenCredential) { MetricsAdvisorClient client = GetMetricsAdvisorClient(useTokenCredential); var dimensions = new Dictionary <string, string>() { { "region", ExpectedRegion }, { "category", ExpectedCategory } }; var dimensionKey = new DimensionKey(dimensions); var feedbackToAdd = new MetricAnomalyFeedback(MetricId, dimensionKey, CreatedFeedbackStartTime, CreatedFeedbackEndTime, AnomalyValue.AutoDetect); MetricFeedback addedFeedback = await client.AddFeedbackAsync(feedbackToAdd); ValidateMetricFeedback(addedFeedback); Assert.That(addedFeedback.FeedbackKind, Is.EqualTo(MetricFeedbackKind.Anomaly)); var anomalyFeedback = addedFeedback as MetricAnomalyFeedback; Assert.That(anomalyFeedback, Is.Not.Null); Assert.That(anomalyFeedback.AnomalyValue, Is.EqualTo(AnomalyValue.AutoDetect)); Assert.That(anomalyFeedback.StartsOn, Is.EqualTo(CreatedFeedbackStartTime)); Assert.That(anomalyFeedback.EndsOn, Is.EqualTo(CreatedFeedbackEndTime)); Assert.That(anomalyFeedback.UserPrincipal, Is.Not.Null.And.Not.Empty); Assert.That(anomalyFeedback.DetectionConfigurationId, Is.Null); Assert.That(anomalyFeedback.DetectionConfigurationSnapshot, Is.Null); }
public async Task GetFeedbackAsync() { string endpoint = MetricsAdvisorUri; string subscriptionKey = MetricsAdvisorSubscriptionKey; string apiKey = MetricsAdvisorApiKey; var credential = new MetricsAdvisorKeyCredential(subscriptionKey, apiKey); var client = new MetricsAdvisorClient(new Uri(endpoint), credential); string feedbackId = FeedbackId; Response <MetricFeedback> response = await client.GetFeedbackAsync(feedbackId); MetricFeedback feedback = response.Value; Console.WriteLine($"Feedback ID: {feedback.Id}"); Console.WriteLine($"Metric ID: {feedback.MetricId}"); Console.WriteLine($"Feedback type: {feedback.Type}"); Console.WriteLine(); if (feedback.Type == FeedbackType.Anomaly) { MetricAnomalyFeedback anomalyFeedback = feedback as MetricAnomalyFeedback; Console.WriteLine($"Detection configuration ID: {anomalyFeedback.AnomalyDetectionConfigurationId}"); Console.WriteLine($"Anomaly value: {anomalyFeedback.AnomalyValue}"); } else if (feedback.Type == FeedbackType.Comment) { MetricCommentFeedback commentFeedback = feedback as MetricCommentFeedback; Console.WriteLine($"Comment: {commentFeedback.Comment}"); } else if (feedback.Type == FeedbackType.ChangePoint) { MetricChangePointFeedback changePointFeedback = feedback as MetricChangePointFeedback; Console.WriteLine($"Change point value: {changePointFeedback.ChangePointValue}"); } else if (feedback.Type == FeedbackType.Period) { MetricPeriodFeedback periodFeedback = feedback as MetricPeriodFeedback; Console.WriteLine($"Period type: {periodFeedback.PeriodType}"); Console.WriteLine($"Period value: {periodFeedback.PeriodValue}"); } }
public async Task CreateMetricFeedback() { var client = GetMetricsAdvisorClient(); FeedbackDimensionFilter dimensionFilter = new FeedbackDimensionFilter( new DimensionKey( new Dictionary <string, string> { { "Dim1", "Common Lime" }, { "Dim2", "Ant" } })); DateTimeOffset start = Recording.UtcNow.AddMonths(-4); DateTimeOffset end = Recording.UtcNow; MetricAnomalyFeedback anomalyFeedback = new MetricAnomalyFeedback(MetricId, dimensionFilter, start, end, AnomalyValue.NotAnomaly); MetricChangePointFeedback changePointFeedback = new MetricChangePointFeedback(MetricId, dimensionFilter, start, end, ChangePointValue.NotChangePoint); MetricPeriodFeedback periodFeedback = new MetricPeriodFeedback(MetricId, dimensionFilter, PeriodType.AssignValue, 5); MetricCommentFeedback commentFeedback = new MetricCommentFeedback(MetricId, dimensionFilter, "my comment"); var feedbacks = new List <MetricFeedback> { anomalyFeedback, changePointFeedback, periodFeedback, commentFeedback }; foreach (var feedback in feedbacks) { MetricFeedback createdFeedback = await client.CreateMetricFeedbackAsync(feedback).ConfigureAwait(false); Assert.That(createdFeedback.MetricId, Is.EqualTo(MetricId)); Assert.That(createdFeedback.Id, Is.Not.Null); MetricFeedback getFeedback = await client.GetMetricFeedbackAsync(feedbackId : createdFeedback.Id).ConfigureAwait(false); Assert.That(getFeedback.Id, Is.EqualTo(createdFeedback.Id)); } }