Class MetricsAdvisorAsyncClient

java.lang.Object
com.azure.ai.metricsadvisor.MetricsAdvisorAsyncClient

public final class MetricsAdvisorAsyncClient extends Object
This class provides an asynchronous client that contains all the operations that apply to Azure Metrics Advisor.

Instantiating an asynchronous Metrics Advisor Client

 MetricsAdvisorAsyncClient metricsAdvisorAsyncClient =
     new MetricsAdvisorClientBuilder()
         .credential(new MetricsAdvisorKeyCredential("{subscription_key}", "{api_key}"))
         .endpoint("{endpoint}")
         .buildAsyncClient();
 
See Also:
  • Method Details

    • listMetricSeriesDefinitions

      public PagedFlux<MetricSeriesDefinition> listMetricSeriesDefinitions(String metricId, OffsetDateTime activeSince)
      List series definition for a metric.

      Code sample

       String metricId = "b460abfc-7a58-47d7-9d99-21ee21fdfc6e";
       final OffsetDateTime activeSince = OffsetDateTime.parse("2020-07-10T00:00:00Z");
      
       metricsAdvisorAsyncClient.listMetricSeriesDefinitions(metricId, activeSince)
           .subscribe(metricSeriesDefinition -> {
               System.out.printf("Data Feed Metric id for the retrieved series definition : %s%n",
                   metricSeriesDefinition.getMetricId());
               System.out.printf("Series Key:");
               System.out.println(metricSeriesDefinition.getSeriesKey().asMap());
           });
       
      Parameters:
      metricId - metric unique id.
      activeSince - the start time for querying series ingested after this time.
      Returns:
      A PagedFlux of the metric series definitions.
      Throws:
      IllegalArgumentException - thrown if metricId fail the UUID format validation.
      MetricsAdvisorResponseException - thrown if the request is rejected by server.
      NullPointerException - thrown if the metricId or activeSince is null.
    • listMetricSeriesDefinitions

      public PagedFlux<MetricSeriesDefinition> listMetricSeriesDefinitions(String metricId, OffsetDateTime activeSince, ListMetricSeriesDefinitionOptions options)
      List series definition for a metric.

      Code sample

       String metricId = "b460abfc-7a58-47d7-9d99-21ee21fdfc6e";
       final OffsetDateTime activeSince = OffsetDateTime.parse("2020-07-10T00:00:00Z");
       final ListMetricSeriesDefinitionOptions options
           = new ListMetricSeriesDefinitionOptions()
           .setMaxPageSize(10)
           .setDimensionCombinationToFilter(new HashMap<String, List<String>>() {{
                   put("Dim2", Collections.singletonList("Angelfish"));
               }});
      
       metricsAdvisorAsyncClient.listMetricSeriesDefinitions(metricId, activeSince, options)
           .subscribe(metricSeriesDefinition -> {
               System.out.printf("Data Feed Metric id for the retrieved series definition : %s%n",
                   metricSeriesDefinition.getMetricId());
               System.out.printf("Series Key:");
               System.out.println(metricSeriesDefinition.getSeriesKey().asMap());
           });
       
      Parameters:
      metricId - metric unique id.
      activeSince - the start time for querying series ingested after this time.
      options - the additional filtering attributes that can be provided to query the series.
      Returns:
      A PagedFlux of the metric series definitions.
      Throws:
      IllegalArgumentException - thrown if metricId fail the UUID format validation.
      MetricsAdvisorResponseException - thrown if the request is rejected by server.
      NullPointerException - thrown if the metricId or activeSince is null.
    • listMetricSeriesData

      public PagedFlux<MetricSeriesData> listMetricSeriesData(String metricId, List<DimensionKey> seriesKeys, OffsetDateTime startTime, OffsetDateTime endTime)
      Get time series data from metric.

      Code sample

       final String metricId = "2dgfbbbb-41ec-a637-677e77b81455";
       final OffsetDateTime startTime = OffsetDateTime.parse("2020-09-09T00:00:00Z");
       final OffsetDateTime endTime = OffsetDateTime.parse("2020-09-09T12:00:00Z");
      
       final List<DimensionKey> seriesKeyFilter
           = Arrays.asList(new DimensionKey().put("cost", "redmond"));
      
       metricsAdvisorAsyncClient.listMetricSeriesData(metricId, seriesKeyFilter, startTime, endTime)
           .subscribe(metricSeriesData -> {
               System.out.println("List of data points for this series:");
               System.out.println(metricSeriesData.getMetricValues());
               System.out.println("Timestamps of the data related to this time series:");
               System.out.println(metricSeriesData.getTimestamps());
               System.out.printf("Series Key:");
               System.out.println(metricSeriesData.getSeriesKey().asMap());
           });
       
      Parameters:
      metricId - metric unique id.
      seriesKeys - the series key to filter.

      This enables additional filtering of dimension values being queried. For example, let's say we've the dimensions 'category' and 'city', so the api can query value of the dimension 'category', with series key as 'city=redmond'.

      startTime - The start time for querying the time series data.
      endTime - The end time for querying the time series data.
      Returns:
      A PagedFlux of the metric series data points.
      Throws:
      IllegalArgumentException - thrown if metricId fail the UUID format validation.
      MetricsAdvisorResponseException - thrown if the request is rejected by server.
      NullPointerException - thrown if the metricId, startTime or endTime is null.
    • listMetricDimensionValues

      public PagedFlux<String> listMetricDimensionValues(String metricId, String dimensionName)
      List dimension values from certain metric.

      Code sample

      
       metricsAdvisorAsyncClient.listMetricDimensionValues("metricId", "dimension1")
           .subscribe(System.out::println);
       
      Parameters:
      metricId - metric unique id.
      dimensionName - the query dimension name.
      Returns:
      the PagedFlux of the dimension values for that metric.
      Throws:
      IllegalArgumentException - thrown if metricId fail the UUID format validation.
      MetricsAdvisorResponseException - thrown if the request is rejected by server.
      NullPointerException - thrown if the metricId or dimensionName is null.
    • listMetricDimensionValues

      public PagedFlux<String> listMetricDimensionValues(String metricId, String dimensionName, ListMetricDimensionValuesOptions options)
      List dimension values from certain metric.

      Code sample

       metricsAdvisorAsyncClient.listMetricDimensionValues("metricId", "dimension1",
           new ListMetricDimensionValuesOptions().setDimensionValueToFilter("value1").setMaxPageSize(3))
           .subscribe(System.out::println);
       
      Parameters:
      metricId - metric unique id.
      dimensionName - the query dimension name.
      options - the additional filtering parameters to specify while querying.
      Returns:
      the PagedFlux of the dimension values for that metric.
      Throws:
      IllegalArgumentException - thrown if metricId fail the UUID format validation.
      MetricsAdvisorResponseException - thrown if the request is rejected by server.
      NullPointerException - thrown if the metricId or dimensionName is null.
    • listMetricEnrichmentStatus

      public PagedFlux<EnrichmentStatus> listMetricEnrichmentStatus(String metricId, OffsetDateTime startTime, OffsetDateTime endTime)
      List the enrichment status for a metric.

      Code sample

       final OffsetDateTime startTime = OffsetDateTime.parse("2020-01-01T00:00:00Z");
       final OffsetDateTime endTime = OffsetDateTime.parse("2020-09-09T00:00:00Z");
       final String metricId = "d3gh4i4-b804-4ab9-a70f-0da0c89cft3l";
      
       metricsAdvisorAsyncClient.listMetricEnrichmentStatus(metricId, startTime, endTime)
           .subscribe(enrichmentStatus -> {
               System.out.printf("Data Feed Metric enrichment status : %s%n", enrichmentStatus.getStatus());
               System.out.printf("Data Feed Metric enrichment status message: %s%n", enrichmentStatus.getMessage());
               System.out.printf("Data Feed Metric enrichment status data slice timestamp : %s%n",
                   enrichmentStatus.getTimestamp());
           });
       
      Parameters:
      metricId - metric unique id.
      startTime - The start time for querying the time series data.
      endTime - The end time for querying the time series data.
      Returns:
      the list of enrichment status's for the specified metric.
      Throws:
      IllegalArgumentException - thrown if metricId fail the UUID format validation.
      MetricsAdvisorResponseException - thrown if the request is rejected by server.
      NullPointerException - thrown if metricId, startTime and endTime is null.
    • listMetricEnrichmentStatus

      public PagedFlux<EnrichmentStatus> listMetricEnrichmentStatus(String metricId, OffsetDateTime startTime, OffsetDateTime endTime, ListMetricEnrichmentStatusOptions options)
      List the enrichment status for a metric.

      Code sample

       final OffsetDateTime startTime = OffsetDateTime.parse("2020-01-01T00:00:00Z");
       final OffsetDateTime endTime = OffsetDateTime.parse("2020-09-09T00:00:00Z");
       final String metricId = "d3gh4i4-b804-4ab9-a70f-0da0c89cft3l";
       final ListMetricEnrichmentStatusOptions options = new ListMetricEnrichmentStatusOptions().setMaxPageSize(10);
      
       metricsAdvisorAsyncClient.listMetricEnrichmentStatus(metricId, startTime, endTime, options)
           .subscribe(enrichmentStatus -> {
               System.out.printf("Data Feed Metric enrichment status : %s%n", enrichmentStatus.getStatus());
               System.out.printf("Data Feed Metric enrichment status message: %s%n", enrichmentStatus.getMessage());
               System.out.printf("Data Feed Metric enrichment status data slice timestamp : %s%n",
                   enrichmentStatus.getTimestamp());
           });
       
      Parameters:
      metricId - metric unique id.
      startTime - The start time for querying the time series data.
      endTime - The end time for querying the time series data.
      options - th e additional configurable options to specify when querying the result..
      Returns:
      the list of enrichment status's for the specified metric.
      Throws:
      IllegalArgumentException - thrown if metricId fail the UUID format validation.
      MetricsAdvisorResponseException - thrown if the request is rejected by server.
      NullPointerException - thrown if metricId, startTime and endTime is null.
    • listMetricEnrichedSeriesData

      public PagedFlux<MetricEnrichedSeriesData> listMetricEnrichedSeriesData(String detectionConfigurationId, List<DimensionKey> seriesKeys, OffsetDateTime startTime, OffsetDateTime endTime)
      Given a list of time series keys, retrieve time series version enriched using a detection configuration.

      Code sample

       final String detectionConfigurationId = "e87d899d-a5a0-4259-b752-11aea34d5e34";
       final DimensionKey seriesKey = new DimensionKey()
           .put("Dim1", "Common Lime")
           .put("Dim2", "Antelope");
       final OffsetDateTime startTime = OffsetDateTime.parse("2020-08-12T00:00:00Z");
       final OffsetDateTime endTime = OffsetDateTime.parse("2020-09-12T00:00:00Z");
      
       PagedFlux<MetricEnrichedSeriesData> enrichedDataFlux
           = metricsAdvisorAsyncClient.listMetricEnrichedSeriesData(detectionConfigurationId,
           Arrays.asList(seriesKey),
           startTime,
           endTime);
      
       enrichedDataFlux.subscribe(enrichedData -> {
           System.out.printf("Series Key %s%n:", enrichedData.getSeriesKey().asMap());
           System.out.println("List of data points for this series");
           System.out.println(enrichedData.getMetricValues());
           System.out.println("Timestamps of the data related to this time series:");
           System.out.println(enrichedData.getTimestamps());
           System.out.println("The expected values of the data points calculated by the smart detector:");
           System.out.println(enrichedData.getExpectedMetricValues());
           System.out.println("The lower boundary values of the data points calculated by smart detector:");
           System.out.println(enrichedData.getLowerBoundaryValues());
           System.out.println("the periods calculated for the data points in the time series:");
           System.out.println(enrichedData.getPeriods());
       });
       
      Parameters:
      detectionConfigurationId - The id of the configuration used to enrich the time series identified by the keys in seriesKeys.
      seriesKeys - The time series key list, each key identifies a specific time series.
      startTime - The start time of the time range within which the enriched data is returned.
      endTime - The end time of the time range within which the enriched data is returned.
      Returns:
      The enriched time series.
      Throws:
      IllegalArgumentException - thrown if detectionConfigurationId fail the UUID format validation or if seriesKeys is empty.
      NullPointerException - thrown if the detectionConfigurationId or startTime or endTime is null.
    • listAnomaliesForDetectionConfig

      public PagedFlux<DataPointAnomaly> listAnomaliesForDetectionConfig(String detectionConfigurationId, OffsetDateTime startTime, OffsetDateTime endTime)
      Fetch the anomalies identified by an anomaly detection configuration.

      Code sample

       final String detectionConfigurationId = "c0f2539f-b804-4ab9-a70f-0da0c89c76d8";
       final OffsetDateTime startTime = OffsetDateTime.parse("2020-09-09T00:00:00Z");
       final OffsetDateTime endTime = OffsetDateTime.parse("2020-09-09T12:00:00Z");
      
       metricsAdvisorAsyncClient.listAnomaliesForDetectionConfig(detectionConfigurationId,
           startTime, endTime)
           .subscribe(anomaly -> {
               System.out.printf("DataPoint Anomaly AnomalySeverity: %s%n", anomaly.getSeverity());
               System.out.printf("Series Key:");
               DimensionKey seriesKey = anomaly.getSeriesKey();
               for (Map.Entry<String, String> dimension : seriesKey.asMap().entrySet()) {
                   System.out.printf("DimensionName: %s DimensionValue:%s%n",
                       dimension.getKey(), dimension.getValue());
               }
           });
       
      Parameters:
      detectionConfigurationId - The anomaly detection configuration id.
      startTime - The start time of the time range within which the anomalies were detected.
      endTime - The end time of the time range within which the anomalies were detected.
      Returns:
      The anomalies.
      Throws:
      IllegalArgumentException - thrown if detectionConfigurationId does not conform to the UUID format specification or options.filter is used to set severity but either min or max severity is missing.
      NullPointerException - thrown if the detectionConfigurationId or options or startTime or endTime is null.
    • listAnomaliesForDetectionConfig

      public PagedFlux<DataPointAnomaly> listAnomaliesForDetectionConfig(String detectionConfigurationId, OffsetDateTime startTime, OffsetDateTime endTime, ListAnomaliesDetectedOptions options)
      Fetch the anomalies identified by an anomaly detection configuration.

      Code sample

       final String detectionConfigurationId = "c0f2539f-b804-4ab9-a70f-0da0c89c76d8";
       final OffsetDateTime startTime = OffsetDateTime.parse("2020-09-09T00:00:00Z");
       final OffsetDateTime endTime = OffsetDateTime.parse("2020-09-09T12:00:00Z");
       final ListAnomaliesDetectedFilter filter = new ListAnomaliesDetectedFilter()
           .setSeverityRange(AnomalySeverity.LOW, AnomalySeverity.MEDIUM);
       final ListAnomaliesDetectedOptions options = new ListAnomaliesDetectedOptions()
           .setMaxPageSize(10)
           .setFilter(filter);
       metricsAdvisorAsyncClient.listAnomaliesForDetectionConfig(detectionConfigurationId,
               startTime, endTime, options)
           .subscribe(anomaly -> {
               System.out.printf("DataPoint Anomaly AnomalySeverity: %s%n", anomaly.getSeverity());
               System.out.printf("Series Key:");
               DimensionKey seriesKey = anomaly.getSeriesKey();
               for (Map.Entry<String, String> dimension : seriesKey.asMap().entrySet()) {
                   System.out.printf("DimensionName: %s DimensionValue:%s%n",
                       dimension.getKey(), dimension.getValue());
               }
           });
       
      Parameters:
      detectionConfigurationId - The anomaly detection configuration id.
      startTime - The start time of the time range within which the anomalies were detected.
      endTime - The end time of the time range within which the anomalies were detected.
      options - The additional parameters.
      Returns:
      The anomalies.
      Throws:
      IllegalArgumentException - thrown if detectionConfigurationId does not conform to the UUID format specification or options.filter is used to set severity but either min or max severity is missing.
      NullPointerException - thrown if the detectionConfigurationId or options or startTime or endTime is null.
    • listIncidentsForDetectionConfig

      public PagedFlux<AnomalyIncident> listIncidentsForDetectionConfig(String detectionConfigurationId, OffsetDateTime startTime, OffsetDateTime endTime)
      Fetch the incidents identified by an anomaly detection configuration.

      Code sample

       final String detectionConfigurationId = "c0f2539f-b804-4ab9-a70f-0da0c89c76d8";
       final OffsetDateTime startTime = OffsetDateTime.parse("2020-09-09T00:00:00Z");
       final OffsetDateTime endTime = OffsetDateTime.parse("2020-09-09T12:00:00Z");
      
       PagedFlux<AnomalyIncident> incidentsFlux
           = metricsAdvisorAsyncClient.listIncidentsForDetectionConfig(detectionConfigurationId, startTime,
           endTime);
      
       incidentsFlux.subscribe(incident -> {
           System.out.printf("Data Feed Metric Id: %s%n", incident.getMetricId());
           System.out.printf("Detection Configuration Id: %s%n", incident.getDetectionConfigurationId());
           System.out.printf("Anomaly Incident Id: %s%n", incident.getId());
           System.out.printf("Anomaly Incident Start Time: %s%n", incident.getStartTime());
           System.out.printf("Anomaly Incident AnomalySeverity: %s%n", incident.getSeverity());
           System.out.printf("Anomaly Incident Status: %s%n", incident.getStatus());
           System.out.printf("Root DataFeedDimension Key: %s%n", incident.getRootDimensionKey().asMap());
       });
       
      Parameters:
      detectionConfigurationId - The anomaly detection configuration id.
      startTime - The start time of the time range within which the incidents were detected.
      endTime - The end time of the time range within which the incidents were detected.
      Returns:
      The incidents.
      Throws:
      IllegalArgumentException - thrown if detectionConfigurationId does not conform to the UUID format specification.
      NullPointerException - thrown if the detectionConfigurationId or options or startTime or endTime is null.
    • listIncidentsForDetectionConfig

      public PagedFlux<AnomalyIncident> listIncidentsForDetectionConfig(String detectionConfigurationId, OffsetDateTime startTime, OffsetDateTime endTime, ListIncidentsDetectedOptions options)
      Fetch the incidents identified by an anomaly detection configuration.

      Code sample

       final String detectionConfigurationId = "c0f2539f-b804-4ab9-a70f-0da0c89c76d8";
       final OffsetDateTime startTime = OffsetDateTime.parse("2020-09-09T00:00:00Z");
       final OffsetDateTime endTime = OffsetDateTime.parse("2020-09-09T12:00:00Z");
       final ListIncidentsDetectedOptions options = new ListIncidentsDetectedOptions()
           .setMaxPageSize(1000);
      
       PagedFlux<AnomalyIncident> incidentsFlux
           = metricsAdvisorAsyncClient.listIncidentsForDetectionConfig(detectionConfigurationId, startTime,
           endTime, options);
      
       incidentsFlux.subscribe(incident -> {
           System.out.printf("Data Feed Metric Id: %s%n", incident.getMetricId());
           System.out.printf("Detection Configuration Id: %s%n", incident.getDetectionConfigurationId());
           System.out.printf("Anomaly Incident Id: %s%n", incident.getId());
           System.out.printf("Anomaly Incident Start Time: %s%n", incident.getStartTime());
           System.out.printf("Anomaly Incident AnomalySeverity: %s%n", incident.getSeverity());
           System.out.printf("Anomaly Incident Status: %s%n", incident.getStatus());
           System.out.printf("Root DataFeedDimension Key: %s%n", incident.getRootDimensionKey().asMap());
       });
       
      Parameters:
      detectionConfigurationId - The anomaly detection configuration id.
      startTime - The start time of the time range within which the incidents were detected.
      endTime - The end time of the time range within which the incidents were detected.
      options - The additional parameters.
      Returns:
      The incidents.
      Throws:
      IllegalArgumentException - thrown if detectionConfigurationId does not conform to the UUID format specification.
      NullPointerException - thrown if the detectionConfigurationId or options or startTime or endTime is null.
    • listIncidentRootCauses

      public PagedFlux<IncidentRootCause> listIncidentRootCauses(String detectionConfigurationId, String incidentId)
      List the root causes for an incident.

      Code sample

       final String detectionConfigurationId = "c0dddf2539f-b804-4ab9-a70f-0da0c89c76d8";
       final String incidentId = "c5thh0f2539f-b804-4ab9-a70f-0da0c89c456d";
      
       metricsAdvisorAsyncClient.listIncidentRootCauses(detectionConfigurationId, incidentId)
           .subscribe(incidentRootCause -> {
               System.out.printf("Description: %s%n", incidentRootCause.getDescription());
               System.out.println("Series Key:");
               System.out.println(incidentRootCause.getSeriesKey().asMap());
               System.out.printf("Confidence for the detected incident root cause: %.2f%n",
                   incidentRootCause.getContributionScore());
           });
      
       
      Parameters:
      detectionConfigurationId - anomaly detection configuration unique id.
      incidentId - the incident for which you want to query root causes for.
      Returns:
      the list of root causes for that incident.
      Throws:
      IllegalArgumentException - thrown if detectionConfigurationId fail the UUID format validation.
      MetricsAdvisorResponseException - thrown if the request is rejected by server.
      NullPointerException - thrown if the detectionConfigurationId or incidentId is null.
    • listIncidentRootCauses

      public PagedFlux<IncidentRootCause> listIncidentRootCauses(AnomalyIncident anomalyIncident)
      List the root causes for an anomalyIncident.

      Code sample

       final String detectionConfigurationId = "c0f2539f-b804-4ab9-a70f-0da0c89c76d8";
       final OffsetDateTime startTime = OffsetDateTime.parse("2020-01-01T00:00:00Z");
       final OffsetDateTime endTime = OffsetDateTime.parse("2020-09-09T00:00:00Z");
       final ListIncidentsDetectedOptions options
           = new ListIncidentsDetectedOptions()
           .setMaxPageSize(10);
      
       metricsAdvisorAsyncClient.listIncidentsForDetectionConfig(detectionConfigurationId, startTime, endTime,
           options)
           .flatMap(incident -> {
               return metricsAdvisorAsyncClient.listIncidentRootCauses(incident);
           })
           .subscribe(incidentRootCause -> {
               System.out.printf("Description: %s%n", incidentRootCause.getDescription());
               System.out.printf("Series Key:");
               System.out.println(incidentRootCause.getSeriesKey().asMap());
           });
      
       
      Parameters:
      anomalyIncident - the anomalyIncident for which you want to query root causes for.
      Returns:
      the list of root causes for that anomalyIncident.
      Throws:
      IllegalArgumentException - thrown if detectionConfigurationId fail the UUID format validation.
      MetricsAdvisorResponseException - thrown if the request is rejected by server.
      NullPointerException - thrown if the detectionConfigurationId or incidentId is null.
    • listAnomalyDimensionValues

      public PagedFlux<String> listAnomalyDimensionValues(String detectionConfigurationId, String dimensionName, OffsetDateTime startTime, OffsetDateTime endTime)
      Fetch dimension values that have anomalies.

      Code sample

       final String detectionConfigurationId = "c0f2539f-b804-4ab9-a70f-0da0c89c76d8";
       final String dimensionName = "Dim1";
       final OffsetDateTime startTime = OffsetDateTime.parse("2020-01-01T00:00:00Z");
       final OffsetDateTime endTime = OffsetDateTime.parse("2020-09-09T00:00:00Z");
      
       metricsAdvisorAsyncClient.listAnomalyDimensionValues(detectionConfigurationId,
           dimensionName,
           startTime, endTime)
           .subscribe(dimensionValue -> {
               System.out.printf("DataFeedDimension Value: %s%n", dimensionValue);
           });
       
      Parameters:
      detectionConfigurationId - Identifies the configuration used to detect the anomalies.
      dimensionName - The dimension name to retrieve the values for.
      startTime - The start time of the time range within which the anomalies were identified.
      endTime - The end time of the time range within which the anomalies were identified.
      Returns:
      The dimension values with anomalies.
      Throws:
      IllegalArgumentException - thrown if detectionConfigurationId does not conform to the UUID format specification.
      NullPointerException - thrown if the detectionConfigurationId or dimensionName or options or startTime or endTime is null.
    • listAnomalyDimensionValues

      public PagedFlux<String> listAnomalyDimensionValues(String detectionConfigurationId, String dimensionName, OffsetDateTime startTime, OffsetDateTime endTime, ListAnomalyDimensionValuesOptions options)
      Fetch dimension values that have anomalies.

      Code sample

       final String detectionConfigurationId = "c0f2539f-b804-4ab9-a70f-0da0c89c76d8";
       final String dimensionName = "Dim1";
       final OffsetDateTime startTime = OffsetDateTime.parse("2020-01-01T00:00:00Z");
       final OffsetDateTime endTime = OffsetDateTime.parse("2020-09-09T00:00:00Z");
       final ListAnomalyDimensionValuesOptions options
           = new ListAnomalyDimensionValuesOptions()
           .setMaxPageSize(10);
      
       metricsAdvisorAsyncClient.listAnomalyDimensionValues(detectionConfigurationId,
           dimensionName,
           startTime, endTime, options)
           .subscribe(dimensionValue -> {
               System.out.printf("DataFeedDimension Value: %s%n", dimensionValue);
           });
       
      Parameters:
      detectionConfigurationId - Identifies the configuration used to detect the anomalies.
      dimensionName - The dimension name to retrieve the values for.
      startTime - The start time of the time range within which the anomalies were identified.
      endTime - The end time of the time range within which the anomalies were identified.
      options - The additional parameters.
      Returns:
      The dimension values with anomalies.
      Throws:
      IllegalArgumentException - thrown if detectionConfigurationId does not conform to the UUID format specification.
      NullPointerException - thrown if the detectionConfigurationId or dimensionName or options or startTime or endTime is null.
    • listAlerts

      public PagedFlux<AnomalyAlert> listAlerts(String alertConfigurationId, OffsetDateTime startTime, OffsetDateTime endTime)
      Fetch the alerts triggered by an anomaly alert configuration.

      Code sample

       final String alertConfigurationId = "ff3014a0-bbbb-41ec-a637-677e77b81299";
       final OffsetDateTime startTime = OffsetDateTime.parse("2020-01-01T00:00:00Z");
       final OffsetDateTime endTime = OffsetDateTime.parse("2020-09-09T00:00:00Z");
       final AlertQueryTimeMode timeMode = AlertQueryTimeMode.ANOMALY_TIME;
      
       metricsAdvisorAsyncClient.listAlerts(alertConfigurationId, startTime, endTime)
           .subscribe(alert -> {
               System.out.printf("Anomaly Alert Id: %s%n", alert.getId());
               System.out.printf("Created Time: %s%n", alert.getCreatedTime());
               System.out.printf("Modified Time: %s%n", alert.getModifiedTime());
           });
       
      Parameters:
      alertConfigurationId - The anomaly alert configuration id.
      startTime - The start time of the time range within which the alerts were triggered.
      endTime - The end time of the time range within which the alerts were triggered.
      Returns:
      The alerts.
      Throws:
      IllegalArgumentException - thrown if alertConfigurationId does not conform to the UUID format specification.
      NullPointerException - thrown if the alertConfigurationId or startTime or endTime is null.
    • listAlerts

      public PagedFlux<AnomalyAlert> listAlerts(String alertConfigurationId, OffsetDateTime startTime, OffsetDateTime endTime, ListAlertOptions options)
      Fetch the alerts triggered by an anomaly alert configuration.

      Code sample

       final String alertConfigurationId = "ff3014a0-bbbb-41ec-a637-677e77b81299";
       final OffsetDateTime startTime = OffsetDateTime.parse("2020-01-01T00:00:00Z");
       final OffsetDateTime endTime = OffsetDateTime.parse("2020-09-09T00:00:00Z");
       final AlertQueryTimeMode timeMode = AlertQueryTimeMode.ANOMALY_TIME;
       final ListAlertOptions options = new ListAlertOptions()
           .setAlertQueryTimeMode(timeMode)
           .setMaxPageSize(10);
      
       metricsAdvisorAsyncClient.listAlerts(alertConfigurationId, startTime, endTime, options)
           .subscribe(alert -> {
               System.out.printf("Anomaly Alert Id: %s%n", alert.getId());
               System.out.printf("Created Time: %s%n", alert.getCreatedTime());
               System.out.printf("Modified Time: %s%n", alert.getModifiedTime());
           });
       
      Parameters:
      alertConfigurationId - The anomaly alert configuration id.
      startTime - The start time of the time range within which the alerts were triggered.
      endTime - The end time of the time range within which the alerts were triggered.
      options - The additional parameters.
      Returns:
      The alerts.
      Throws:
      IllegalArgumentException - thrown if alertConfigurationId does not conform to the UUID format specification.
      NullPointerException - thrown if the alertConfigurationId or startTime or endTime is null.
    • listAnomaliesForAlert

      public PagedFlux<DataPointAnomaly> listAnomaliesForAlert(String alertConfigurationId, String alertId)
      Fetch the anomalies in an alert.

      Code sample

       final String alertConfigurationId = "ff3014a0-bbbb-41ec-a637-677e77b81299";
       final String alertId = "1746b031c00";
      
       metricsAdvisorAsyncClient.listAnomaliesForAlert(
           alertConfigurationId,
           alertId)
           .subscribe(anomaly -> {
               System.out.printf("Data Feed Metric Id: %s%n", anomaly.getMetricId());
               System.out.printf("Detection Configuration Id: %s%n", anomaly.getDetectionConfigurationId());
               System.out.printf("DataPoint Anomaly Created Time: %s%n", anomaly.getCreatedTime());
               System.out.printf("DataPoint Anomaly Modified Time: %s%n", anomaly.getModifiedTime());
               System.out.printf("DataPoint Anomaly AnomalySeverity: %s%n", anomaly.getSeverity());
               System.out.printf("DataPoint Anomaly Status: %s%n", anomaly.getStatus());
               System.out.printf("Series Key:");
               DimensionKey seriesKey = anomaly.getSeriesKey();
               for (Map.Entry<String, String> dimension : seriesKey.asMap().entrySet()) {
                   System.out.printf("DimensionName: %s DimensionValue:%s%n",
                       dimension.getKey(), dimension.getValue());
               }
           });
       
      Parameters:
      alertConfigurationId - The anomaly alert configuration id.
      alertId - The alert id.
      Returns:
      The anomalies.
      Throws:
      IllegalArgumentException - thrown if alertConfigurationId or alertId does not conform to the UUID format specification.
      NullPointerException - thrown if the alertConfigurationId or alertId is null.
    • listAnomaliesForAlert

      public PagedFlux<DataPointAnomaly> listAnomaliesForAlert(String alertConfigurationId, String alertId, ListAnomaliesAlertedOptions options)
      Fetch the anomalies in an alert.

      Code sample

       final String alertConfigurationId = "ff3014a0-bbbb-41ec-a637-677e77b81299";
       final String alertId = "1746b031c00";
       final ListAnomaliesAlertedOptions options = new ListAnomaliesAlertedOptions()
           .setMaxPageSize(10);
       metricsAdvisorAsyncClient.listAnomaliesForAlert(
           alertConfigurationId,
           alertId,
           options)
           .subscribe(anomaly -> {
               System.out.printf("Data Feed Metric Id: %s%n", anomaly.getMetricId());
               System.out.printf("Detection Configuration Id: %s%n", anomaly.getDetectionConfigurationId());
               System.out.printf("DataPoint Anomaly Created Time: %s%n", anomaly.getCreatedTime());
               System.out.printf("DataPoint Anomaly Modified Time: %s%n", anomaly.getModifiedTime());
               System.out.printf("DataPoint Anomaly AnomalySeverity: %s%n", anomaly.getSeverity());
               System.out.printf("DataPoint Anomaly Status: %s%n", anomaly.getStatus());
               System.out.printf("Series Key:");
               System.out.println(anomaly.getSeriesKey().asMap());
           });
       
      Parameters:
      alertConfigurationId - The anomaly alert configuration id.
      alertId - The alert id.
      options - The additional parameters.
      Returns:
      The anomalies.
      Throws:
      IllegalArgumentException - thrown if alertConfigurationId or alertId does not conform to the UUID format specification.
      NullPointerException - thrown if the alertConfigurationId or alertId is null.
    • listIncidentsForAlert

      public PagedFlux<AnomalyIncident> listIncidentsForAlert(String alertConfigurationId, String alertId)
      Fetch the incidents in an alert.

      Code sample

       final String alertConfigurationId = "ff3014a0-bbbb-41ec-a637-677e77b81299";
       final String alertId = "1746b031c00";
       final ListIncidentsAlertedOptions options = new ListIncidentsAlertedOptions()
           .setMaxPageSize(10);
      
       metricsAdvisorAsyncClient.listIncidentsForAlert(
           alertConfigurationId,
           alertId,
           options)
           .subscribe(incident -> {
               System.out.printf("Data Feed Metric Id: %s%n", incident.getMetricId());
               System.out.printf("Detection Configuration Id: %s%n", incident.getDetectionConfigurationId());
               System.out.printf("Anomaly Incident Id: %s%n", incident.getId());
               System.out.printf("Anomaly Incident Start Time: %s%n", incident.getStartTime());
               System.out.printf("Anomaly Incident AnomalySeverity: %s%n", incident.getSeverity());
               System.out.printf("Anomaly Incident Status: %s%n", incident.getStatus());
               System.out.printf("Root DataFeedDimension Key:");
               DimensionKey rootDimension = incident.getRootDimensionKey();
               for (Map.Entry<String, String> dimension : rootDimension.asMap().entrySet()) {
                   System.out.printf("DimensionName: %s DimensionValue:%s%n",
                       dimension.getKey(), dimension.getValue());
               }
           });
       
      Parameters:
      alertConfigurationId - The anomaly alert configuration id.
      alertId - The alert id.
      Returns:
      The incidents.
      Throws:
      IllegalArgumentException - thrown if alertConfigurationId or alertId does not conform to the UUID format specification.
      NullPointerException - thrown if the alertConfigurationId or alertId is null.
    • listIncidentsForAlert

      public PagedFlux<AnomalyIncident> listIncidentsForAlert(String alertConfigurationId, String alertId, ListIncidentsAlertedOptions options)
      Fetch the incidents in an alert.

      Code sample

       final String alertConfigurationId = "ff3014a0-bbbb-41ec-a637-677e77b81299";
       final String alertId = "1746b031c00";
       final ListIncidentsAlertedOptions options = new ListIncidentsAlertedOptions()
           .setMaxPageSize(10);
      
       metricsAdvisorAsyncClient.listIncidentsForAlert(
           alertConfigurationId,
           alertId,
           options)
           .subscribe(incident -> {
               System.out.printf("Data Feed Metric Id: %s%n", incident.getMetricId());
               System.out.printf("Detection Configuration Id: %s%n", incident.getDetectionConfigurationId());
               System.out.printf("Anomaly Incident Id: %s%n", incident.getId());
               System.out.printf("Anomaly Incident Start Time: %s%n", incident.getStartTime());
               System.out.printf("Anomaly Incident AnomalySeverity: %s%n", incident.getSeverity());
               System.out.printf("Anomaly Incident Status: %s%n", incident.getStatus());
               System.out.printf("Root DataFeedDimension Key:");
               DimensionKey rootDimension = incident.getRootDimensionKey();
               for (Map.Entry<String, String> dimension : rootDimension.asMap().entrySet()) {
                   System.out.printf("DimensionName: %s DimensionValue:%s%n",
                       dimension.getKey(), dimension.getValue());
               }
           });
       
      Parameters:
      alertConfigurationId - The anomaly alert configuration id.
      alertId - The alert id.
      options - The additional parameters.
      Returns:
      The incidents.
      Throws:
      IllegalArgumentException - thrown if alertConfigurationId or alertId does not conform to the UUID format specification.
      NullPointerException - thrown if the alertConfigurationId or alertId is null.
    • addFeedback

      public Mono<MetricFeedback> addFeedback(String metricId, MetricFeedback metricFeedback)
      Create a new metric feedback.

      Code sample

       final String metricId = "d3gh4i4-b804-4ab9-a70f-0da0c89cft3l";
       final OffsetDateTime startTime = OffsetDateTime.parse("2020-01-01T00:00:00Z");
       final OffsetDateTime endTime = OffsetDateTime.parse("2020-09-09T00:00:00Z");
       final MetricChangePointFeedback metricChangePointFeedback
           = new MetricChangePointFeedback(startTime, endTime, ChangePointValue.AUTO_DETECT);
      
       metricsAdvisorAsyncClient.addFeedback(metricId, metricChangePointFeedback)
           .subscribe(metricFeedback -> {
               MetricChangePointFeedback createdMetricChangePointFeedback = (MetricChangePointFeedback) metricFeedback;
               System.out.printf("Data Feed Metric feedback Id: %s%n", createdMetricChangePointFeedback.getId());
               System.out.printf("Data Feed Metric feedback change point value: %s%n",
                   createdMetricChangePointFeedback.getChangePointValue().toString());
               System.out.printf("Data Feed Metric feedback start time: %s%n",
                   createdMetricChangePointFeedback.getStartTime());
               System.out.printf("Data Feed Metric feedback end time: %s%n",
                   createdMetricChangePointFeedback.getEndTime());
           });
       
      Parameters:
      metricId - the unique id for which the feedback needs to be submitted.
      metricFeedback - the actual metric feedback.
      Returns:
      A Mono containing the created metric feedback.
      Throws:
      NullPointerException - If metricId, metricFeedback.dimensionFilter is null.
    • addFeedbackWithResponse

      public Mono<Response<MetricFeedback>> addFeedbackWithResponse(String metricId, MetricFeedback metricFeedback)
      Create a new metric feedback.

      Code sample

       final String metricId = "d3gh4i4-b804-4ab9-a70f-0da0c89cft3l";
       final OffsetDateTime startTime = OffsetDateTime.parse("2020-01-01T00:00:00Z");
       final OffsetDateTime endTime = OffsetDateTime.parse("2020-09-09T00:00:00Z");
       final MetricChangePointFeedback metricChangePointFeedback
           = new MetricChangePointFeedback(startTime, endTime, ChangePointValue.AUTO_DETECT);
      
       metricsAdvisorAsyncClient.addFeedbackWithResponse(metricId, metricChangePointFeedback)
           .subscribe(metricFeedbackResponse -> {
               System.out.printf("Data Feed Metric feedback creation operation status %s%n",
                   metricFeedbackResponse.getStatusCode());
               MetricChangePointFeedback createdMetricChangePointFeedback
                   = (MetricChangePointFeedback) metricFeedbackResponse.getValue();
               System.out.printf("Data Feed Metric feedback Id: %s%n", createdMetricChangePointFeedback.getId());
               System.out.printf("Data Feed Metric feedback change point value: %s%n",
                   createdMetricChangePointFeedback.getChangePointValue().toString());
               System.out.printf("Data Feed Metric feedback start time: %s%n",
                   createdMetricChangePointFeedback.getStartTime());
               System.out.printf("Data Feed Metric feedback end time: %s%n",
                   createdMetricChangePointFeedback.getEndTime());
               System.out.printf("Data Feed Metric feedback associated dimension filter: %s%n",
                   createdMetricChangePointFeedback.getDimensionFilter().asMap());
           });
       
      Parameters:
      metricId - the unique id for which the feedback needs to be submitted.
      metricFeedback - the actual metric feedback.
      Returns:
      A Response of a Mono containing the created metric feedback.
      Throws:
      NullPointerException - If metricId, metricFeedback, metricFeedback.dimensionFilter is null.
    • getFeedback

      public Mono<MetricFeedback> getFeedback(String feedbackId)
      Get a metric feedback by its id.

      Code sample

      
       final String feedbackId = "8i3h4i4-b804-4ab9-a70f-0da0c89cft3l";
       metricsAdvisorAsyncClient.getFeedback(feedbackId)
           .subscribe(metricFeedback -> {
               System.out.printf("Data Feed Metric feedback Id: %s%n", metricFeedback.getId());
               System.out.printf("Data Feed Metric feedback associated dimension filter: %s%n",
                   metricFeedback.getDimensionFilter().asMap());
      
               if (PERIOD.equals(metricFeedback.getFeedbackType())) {
                   MetricPeriodFeedback createMetricPeriodFeedback
                       = (MetricPeriodFeedback) metricFeedback;
                   System.out.printf("Data Feed Metric feedback type: %s%n",
                       createMetricPeriodFeedback.getPeriodType().toString());
                   System.out.printf("Data Feed Metric feedback period value: %d%n",
                       createMetricPeriodFeedback.getPeriodValue());
               }
           });
       
      Parameters:
      feedbackId - The metric feedback unique id.
      Returns:
      The metric feedback for the provided id.
      Throws:
      IllegalArgumentException - If feedbackId does not conform to the UUID format specification.
      NullPointerException - thrown if the feedbackId is null.
    • getFeedbackWithResponse

      public Mono<Response<MetricFeedback>> getFeedbackWithResponse(String feedbackId)
      Get a metric feedback by its id.

      Code sample

      
       final String feedbackId = "8i3h4i4-b804-4ab9-a70f-0da0c89cft3l";
       metricsAdvisorAsyncClient.getFeedbackWithResponse(feedbackId)
           .subscribe(metricFeedbackResponse -> {
               final MetricFeedback metricFeedback = metricFeedbackResponse.getValue();
               System.out.printf("Data Feed Metric feedback Id: %s%n", metricFeedback.getId());
               System.out.printf("Data Feed Metric feedback associated dimension filter: %s%n",
                   metricFeedback.getDimensionFilter().asMap());
      
               if (PERIOD.equals(metricFeedback.getFeedbackType())) {
                   MetricPeriodFeedback createMetricPeriodFeedback
                       = (MetricPeriodFeedback) metricFeedback;
                   System.out.printf("Data Feed Metric feedback type: %s%n",
                       createMetricPeriodFeedback.getPeriodType().toString());
                   System.out.printf("Data Feed Metric feedback period value: %d%n",
                       createMetricPeriodFeedback.getPeriodValue());
               }
           });
       
      Parameters:
      feedbackId - The metric feedback unique id.
      Returns:
      The metric feedback for the provided id.
      Throws:
      IllegalArgumentException - If feedbackId does not conform to the UUID format specification.
      NullPointerException - thrown if the feedbackId is null.
    • listFeedback

      public PagedFlux<MetricFeedback> listFeedback(String metricId)
      List information of metrics feedback on the account for a metric Id.

      Code sample

       final String metricId = "d3gh4i4-b804-4ab9-a70f-0da0c89cft3l";
       metricsAdvisorAsyncClient.listFeedback(metricId)
           .subscribe(metricFeedback -> {
               System.out.printf("Data Feed Metric feedback Id: %s%n", metricFeedback.getId());
               System.out.printf("Data Feed Metric feedback associated dimension filter: %s%n",
                   metricFeedback.getDimensionFilter().asMap());
      
               if (PERIOD.equals(metricFeedback.getFeedbackType())) {
                   MetricPeriodFeedback periodFeedback
                       = (MetricPeriodFeedback) metricFeedback;
                   System.out.printf("Data Feed Metric feedback type: %s%n",
                       periodFeedback.getPeriodType().toString());
                   System.out.printf("Data Feed Metric feedback period value: %d%n",
                       periodFeedback.getPeriodValue());
               } else if (ANOMALY.equals(metricFeedback.getFeedbackType())) {
                   MetricAnomalyFeedback metricAnomalyFeedback
                       = (MetricAnomalyFeedback) metricFeedback;
                   System.out.printf("Data Feed Metric feedback anomaly value: %s%n",
                       metricAnomalyFeedback.getAnomalyValue().toString());
                   System.out.printf("Data Feed Metric feedback associated detection configuration: %s%n",
                       metricAnomalyFeedback.getDetectionConfigurationId());
               } else if (COMMENT.equals(metricFeedback.getFeedbackType())) {
                   MetricCommentFeedback metricCommentFeedback
                       = (MetricCommentFeedback) metricFeedback;
                   System.out.printf("Data Feed Metric feedback comment value: %s%n",
                       metricCommentFeedback.getComment());
               }
           });
       
      Parameters:
      metricId - the unique metric Id.
      Returns:
      A PagedFlux containing information of all the metric feedbacks in the account.
      Throws:
      IllegalArgumentException - thrown if metricId fail the UUID format validation.
      MetricsAdvisorResponseException - thrown if the request is rejected by server.
      NullPointerException - thrown if the metricId is null.
    • listFeedback

      public PagedFlux<MetricFeedback> listFeedback(String metricId, ListMetricFeedbackOptions options)
      List information of all metric feedbacks on the metrics advisor account for a metric Id.

      Code sample

       final String metricId = "d3gh4i4-b804-4ab9-a70f-0da0c89cft3l";
       final OffsetDateTime startTime = OffsetDateTime.parse("2020-01-01T00:00:00Z");
       final OffsetDateTime endTime = OffsetDateTime.parse("2020-09-09T00:00:00Z");
      
       metricsAdvisorAsyncClient.listFeedback(metricId,
           new ListMetricFeedbackOptions()
               .setFilter(new ListMetricFeedbackFilter()
                   .setStartTime(startTime)
                   .setTimeMode(FeedbackQueryTimeMode.FEEDBACK_CREATED_TIME)
                   .setEndTime(endTime)))
           .subscribe(metricFeedback -> {
               System.out.printf("Data Feed Metric feedback Id: %s%n", metricFeedback.getId());
               System.out.printf("Data Feed Metric feedback associated dimension filter: %s%n",
                   metricFeedback.getDimensionFilter().asMap());
               System.out.printf("Data Feed Metric feedback created time %s%n", metricFeedback.getCreatedTime());
      
               if (PERIOD.equals(metricFeedback.getFeedbackType())) {
                   MetricPeriodFeedback periodFeedback
                       = (MetricPeriodFeedback) metricFeedback;
                   System.out.printf("Data Feed Metric feedback type: %s%n",
                       periodFeedback.getPeriodType().toString());
                   System.out.printf("Data Feed Metric feedback period value: %d%n",
                       periodFeedback.getPeriodValue());
               } else if (ANOMALY.equals(metricFeedback.getFeedbackType())) {
                   MetricAnomalyFeedback metricAnomalyFeedback
                       = (MetricAnomalyFeedback) metricFeedback;
                   System.out.printf("Data Feed Metric feedback anomaly value: %s%n",
                       metricAnomalyFeedback.getAnomalyValue().toString());
                   System.out.printf("Data Feed Metric feedback associated detection configuration: %s%n",
                       metricAnomalyFeedback.getDetectionConfigurationId());
               } else if (COMMENT.equals(metricFeedback.getFeedbackType())) {
                   MetricCommentFeedback metricCommentFeedback
                       = (MetricCommentFeedback) metricFeedback;
                   System.out.printf("Data Feed Metric feedback comment value: %s%n",
                       metricCommentFeedback.getComment());
               }
           });
       
      Parameters:
      metricId - the unique metric Id.
      options - The configurable options to pass for filtering the output result.
      Returns:
      A PagedFlux containing information of all the metric feedbacks in the account.
      Throws:
      IllegalArgumentException - thrown if metricId fail the UUID format validation.
      MetricsAdvisorResponseException - thrown if the request is rejected by server.
      NullPointerException - thrown if the metricId is null.