private static string GetAggregation(MetricQueryOptions options) { if (options?.Aggregations == null || options.Aggregations.Count == 0) { return(null); } return(string.Join(",", options.Aggregations)); }
/// <summary> /// Queries metrics for a resource. /// </summary> /// <param name="resource">The resource name. /// For example: <c>/subscriptions/[subscription_id]/resourceGroups/[resource_group_name]/providers/Microsoft.OperationalInsights/workspaces/[workspace_name]</c>.</param> /// <param name="metrics">The list of metrics to query.</param> /// <param name="options">The additional request options.</param> /// <param name="cancellationToken">The <see cref="CancellationToken"/> to use.</param> /// <returns>The <see cref="MetricQueryResult"/> instance containing the query results.</returns> public virtual Response <MetricQueryResult> Query(string resource, IEnumerable <string> metrics, MetricQueryOptions options = null, CancellationToken cancellationToken = default) { using DiagnosticScope scope = _clientDiagnostics.CreateScope($"{nameof(MetricsClient)}.{nameof(Query)}"); scope.Start(); try { return(_metricsRestClient.List(resource, timespan: options?.TimeSpan?.ToString(), interval: options?.Interval, filter: options?.Filter, top: options?.Top, aggregation: GetAggregation(options), metricnames: string.Join(",", metrics), orderby: options?.OrderBy, metricnamespace: options?.MetricNamespace, cancellationToken: cancellationToken)); } catch (Exception e) { scope.Failed(e); throw; } }