v2_metrics_QueryScalarData_3112571352/
v2_metrics_QueryScalarData_3112571352.rs

1// Scalar cross product query 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            1636625471000,
21            vec![ScalarQuery::MetricsScalarQuery(Box::new(
22                MetricsScalarQuery::new(
23                    MetricsAggregator::AVG,
24                    MetricsDataSource::METRICS,
25                    "avg:system.cpu.user{*}".to_string(),
26                )
27                .name("a".to_string()),
28            ))],
29            1636629071000,
30        )
31        .formulas(vec![QueryFormula::new("a".to_string())
32            .limit(FormulaLimit::new().count(10).order(QuerySortOrder::DESC))]),
33        ScalarFormulaRequestType::SCALAR_REQUEST,
34    ));
35    let configuration = datadog::Configuration::new();
36    let api = MetricsAPI::with_config(configuration);
37    let resp = api.query_scalar_data(body).await;
38    if let Ok(value) = resp {
39        println!("{:#?}", value);
40    } else {
41        println!("{:#?}", resp.unwrap_err());
42    }
43}