v2_metrics_QueryScalarData/
v2_metrics_QueryScalarData.rs

1// Query scalar data across multiple products returns "OK" response
2use datadog_api_client::datadog;
3use datadog_api_client::datadogV2::api_metrics::MetricsAPI;
4use datadog_api_client::datadogV2::model::FormulaLimit;
5use datadog_api_client::datadogV2::model::MetricsAggregator;
6use datadog_api_client::datadogV2::model::MetricsDataSource;
7use datadog_api_client::datadogV2::model::MetricsScalarQuery;
8use datadog_api_client::datadogV2::model::QueryFormula;
9use datadog_api_client::datadogV2::model::QuerySortOrder;
10use datadog_api_client::datadogV2::model::ScalarFormulaQueryRequest;
11use datadog_api_client::datadogV2::model::ScalarFormulaRequest;
12use datadog_api_client::datadogV2::model::ScalarFormulaRequestAttributes;
13use datadog_api_client::datadogV2::model::ScalarFormulaRequestType;
14use datadog_api_client::datadogV2::model::ScalarQuery;
15
16#[tokio::main]
17async fn main() {
18    let body = ScalarFormulaQueryRequest::new(ScalarFormulaRequest::new(
19        ScalarFormulaRequestAttributes::new(
20            1568899800000,
21            vec![ScalarQuery::MetricsScalarQuery(Box::new(
22                MetricsScalarQuery::new(
23                    MetricsAggregator::AVG,
24                    MetricsDataSource::METRICS,
25                    "avg:system.cpu.user{*} by {env}".to_string(),
26                ),
27            ))],
28            1568923200000,
29        )
30        .formulas(vec![QueryFormula::new("a+b".to_string())
31            .limit(FormulaLimit::new().count(10).order(QuerySortOrder::DESC))]),
32        ScalarFormulaRequestType::SCALAR_REQUEST,
33    ));
34    let configuration = datadog::Configuration::new();
35    let api = MetricsAPI::with_config(configuration);
36    let resp = api.query_scalar_data(body).await;
37    if let Ok(value) = resp {
38        println!("{:#?}", value);
39    } else {
40        println!("{:#?}", resp.unwrap_err());
41    }
42}