Repository navigation
How to get the Query value widget through datadog api #1915
Description
Activity
Thanks for your contribution!
This issue has been automatically marked as stale because it has not had activity in the last 30 days. Note that the issue will not be automatically closed, but this notification will remind us to investigate why there's been inactivity. Thank you for participating in the Datadog open source community.
If you would like this issue to remain open:
-
Verify that you can still reproduce the issue in the latest version of this project.
-
Comment that the issue is still reproducible and include updated details requested in the issue template.
-
Hello @kumarsyamala
Did you find any solution ?I need to extract data from the widget and I consulted queryscalardata as @nkzou recommended
look at this example: https://github.com/DataDog/datadog-api-client-python/blob/master/examples/v2/metrics/QueryScalarData.py
I used this to create my script and it worked
main script
from dashboard_data import get_dashboard_data from widget_data import get_widget_data def get_metric(): from_ts = 1738749600000 to_ts = 1738753200000 widget_id = YOUR_WIDGET_ID api_key = YOUR_API_KEY app_key = YOUR_APP_KEY dashboard_json = get_dashboard_data(api_key, app_key) widget_data = get_widget_data( dashboard_json, widget_id, from_ts, to_ts, api_key, app_key ) if widget_data: return widget_data return {}script to get the dashboard:
from datadog_api_client import ApiClient, Configuration from datadog_api_client.v1.api.dashboards_api import DashboardsApi def get_dashboard_data(api_key, app_key): configuration = Configuration() configuration.api_key["apiKeyAuth"] = api_key configuration.api_key["appKeyAuth"] = app_key with ApiClient(configuration) as api_client: api_instance = DashboardsApi(api_client) try: api_response = api_instance.get_dashboard(YOUR_DASHBOARD_ID) dashboard_json = api_response.to_dict() return dashboard_json except Exception as e: print(f"Error getting dashboard: {e}") return NoneScript to extract widget data
from datadog_api_client import ApiClient, Configuration from datadog_api_client.v2.api.metrics_api import MetricsApi from datadog_api_client.v2.model.query_formula import QueryFormula from datadog_api_client.v2.model.scalar_formula_query_request import ScalarFormulaQueryRequest from datadog_api_client.v2.model.scalar_formula_request import ScalarFormulaRequest from datadog_api_client.v2.model.scalar_formula_request_attributes import ScalarFormulaRequestAttributes from datadog_api_client.v2.model.scalar_formula_request_queries import ScalarFormulaRequestQueries from datadog_api_client.v2.model.scalar_formula_request_type import ScalarFormulaRequestType from datadog_api_client.v2.model.events_compute import EventsCompute from datadog_api_client.v2.model.events_scalar_query import EventsScalarQuery import json def get_widget_data(dashboard_json, widget_id, from_ts, to_ts, api_key, app_key): widget = next((w for w in dashboard_json.get("widgets", []) if w.get("id") == widget_id), None) configuration = Configuration() configuration.api_key["apiKeyAuth"] = api_key configuration.api_key["appKeyAuth"] = app_key queries_data = widget['definition']['requests'][0]['queries'] formulas_data = widget['definition']['requests'][0]['formulas'] formulas = [] queries = [] for q in queries_data: query_object = EventsScalarQuery( compute=EventsCompute( aggregation=q["compute"]["aggregation"], metric=q["compute"]["metric"] ), data_source=q["data_source"], name=q["name"], search= { "query": q["search"]["query"] }, group_by=q["group_by"] ) queries.append(query_object) for f in formulas_data: formula_object = QueryFormula( formula=f["formula"] ) formulas.append(formula_object) with ApiClient(configuration) as api_client: api_instance = MetricsApi(api_client) body = ScalarFormulaQueryRequest( data=ScalarFormulaRequest( attributes=ScalarFormulaRequestAttributes( formulas=formulas, _from=from_ts, queries=ScalarFormulaRequestQueries(queries), to=to_ts, ), type=ScalarFormulaRequestType.SCALAR_REQUEST )) response = api_instance.query_scalar_data(body=body) if response and response.data and response.data.attributes: results = {} attributes = response.data.attributes if attributes.columns: for column in attributes.columns: results[column.name] = column.values return json.dumps(results) return json.dumps({})I hope it helps you
Thanks for your contribution!
This issue has been automatically marked as stale because it has not had activity in the last 30 days. Note that the issue will not be automatically closed, but this notification will remind us to investigate why there's been inactivity. Thank you for participating in the Datadog open source community.
If you would like this issue to remain open:
-
Verify that you can still reproduce the issue in the latest version of this project.
-
Comment that the issue is still reproducible and include updated details requested in the issue template.
-
Hi
I am trying to use the Datadog Api.
I already have the Datadog dashboard in that we have few widgets which was created to show the trace count query.
I am planning to get the value of the trace count query through Datadog Api using postman. like how we get the details of a dashboard by giving the dashboard id.
I have used the get dashboard Api call through postman, I can the widget and the query also, but I am not getting the value in the response.
Can someone help me in getting the query value from widget trace count?