Skip to content

Commit 0ce9a6c

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
feat - Add data-quality alert monitor type support (#3076)
Co-authored-by: ci.datadog-api-spec <packages@datadoghq.com>
1 parent a76b93f commit 0ce9a6c

14 files changed

Lines changed: 561 additions & 1 deletion

.generator/schemas/v1/openapi.yaml

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7534,6 +7534,104 @@ components:
75347534
- data_source
75357535
- query
75367536
type: object
7537+
MonitorFormulaAndFunctionDataQualityDataSource:
7538+
description: Data source for data quality queries.
7539+
enum:
7540+
- data_quality_metrics
7541+
example: data_quality_metrics
7542+
type: string
7543+
x-enum-varnames:
7544+
- DATA_QUALITY_METRICS
7545+
MonitorFormulaAndFunctionDataQualityMeasure:
7546+
description: 'The data quality measure to query. Common values include:
7547+
7548+
`bytes`, `cardinality`, `custom`, `freshness`, `max`, `mean`, `min`,
7549+
7550+
`nullness`, `percent_negative`, `percent_zero`, `row_count`, `stddev`,
7551+
7552+
`sum`, `uniqueness`. Additional values may be supported.'
7553+
example: row_count
7554+
type: string
7555+
MonitorFormulaAndFunctionDataQualityModelTypeOverride:
7556+
description: Override for the model type used in anomaly detection.
7557+
enum:
7558+
- freshness
7559+
- percentage
7560+
- any
7561+
type: string
7562+
x-enum-varnames:
7563+
- FRESHNESS
7564+
- PERCENTAGE
7565+
- ANY
7566+
MonitorFormulaAndFunctionDataQualityMonitorOptions:
7567+
description: Monitor configuration options for data quality queries.
7568+
properties:
7569+
crontab_override:
7570+
description: Crontab expression to override the default schedule.
7571+
example: '* * * 10'
7572+
type: string
7573+
custom_sql:
7574+
description: Custom SQL query for the monitor.
7575+
example: SELECT COUNT(*) FROM users AS dd_value
7576+
type: string
7577+
custom_where:
7578+
description: Custom WHERE clause for the query.
7579+
example: USER_ID = 123
7580+
type: string
7581+
group_by_columns:
7582+
description: Columns to group results by.
7583+
example:
7584+
- col1
7585+
- col2
7586+
items:
7587+
type: string
7588+
type: array
7589+
model_type_override:
7590+
$ref: '#/components/schemas/MonitorFormulaAndFunctionDataQualityModelTypeOverride'
7591+
type: object
7592+
MonitorFormulaAndFunctionDataQualityQueryDefinition:
7593+
description: A formula and functions data quality query.
7594+
properties:
7595+
data_source:
7596+
$ref: '#/components/schemas/MonitorFormulaAndFunctionDataQualityDataSource'
7597+
filter:
7598+
description: Filter expression used to match on data entities. Uses Aastra
7599+
query syntax.
7600+
example: search for column where `database:production AND table:users`
7601+
type: string
7602+
group_by:
7603+
description: Optional grouping fields for aggregation.
7604+
example:
7605+
- entity_id
7606+
items:
7607+
type: string
7608+
type: array
7609+
measure:
7610+
$ref: '#/components/schemas/MonitorFormulaAndFunctionDataQualityMeasure'
7611+
monitor_options:
7612+
$ref: '#/components/schemas/MonitorFormulaAndFunctionDataQualityMonitorOptions'
7613+
name:
7614+
description: Name of the query for use in formulas.
7615+
example: query1
7616+
type: string
7617+
schema_version:
7618+
description: Schema version for the data quality query.
7619+
example: 0.0.1
7620+
type: string
7621+
scope:
7622+
description: 'Optional scoping expression to further filter metrics. Uses
7623+
metrics filter syntax.
7624+
7625+
This is useful when an entity has been configured to emit metrics with
7626+
additional tags.'
7627+
example: env:production
7628+
type: string
7629+
required:
7630+
- name
7631+
- data_source
7632+
- measure
7633+
- filter
7634+
type: object
75377635
MonitorFormulaAndFunctionEventAggregation:
75387636
description: Aggregation methods for event platform queries.
75397637
enum:
@@ -7685,6 +7783,7 @@ components:
76857783
oneOf:
76867784
- $ref: '#/components/schemas/MonitorFormulaAndFunctionEventQueryDefinition'
76877785
- $ref: '#/components/schemas/MonitorFormulaAndFunctionCostQueryDefinition'
7786+
- $ref: '#/components/schemas/MonitorFormulaAndFunctionDataQualityQueryDefinition'
76887787
MonitorGroupSearchResponse:
76897788
description: The response of a monitor group search.
76907789
example:
@@ -8523,6 +8622,7 @@ components:
85238622
- database-monitoring alert
85248623
- network-performance alert
85258624
- cost alert
8625+
- data-quality alert
85268626
example: query alert
85278627
type: string
85288628
x-enum-varnames:
@@ -8545,6 +8645,7 @@ components:
85458645
- DATABASE_MONITORING_ALERT
85468646
- NETWORK_PERFORMANCE_ALERT
85478647
- COST_ALERT
8648+
- DATA_QUALITY_ALERT
85488649
MonitorUpdateRequest:
85498650
description: Object describing a monitor update request.
85508651
properties:

docs/datadog_api_client.v1.model.rst

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2293,6 +2293,34 @@ datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_cost\_query\_defi
22932293
:members:
22942294
:show-inheritance:
22952295

2296+
datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_data\_quality\_data\_source module
2297+
-------------------------------------------------------------------------------------------------
2298+
2299+
.. automodule:: datadog_api_client.v1.model.monitor_formula_and_function_data_quality_data_source
2300+
:members:
2301+
:show-inheritance:
2302+
2303+
datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_data\_quality\_model\_type\_override module
2304+
----------------------------------------------------------------------------------------------------------
2305+
2306+
.. automodule:: datadog_api_client.v1.model.monitor_formula_and_function_data_quality_model_type_override
2307+
:members:
2308+
:show-inheritance:
2309+
2310+
datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_data\_quality\_monitor\_options module
2311+
-----------------------------------------------------------------------------------------------------
2312+
2313+
.. automodule:: datadog_api_client.v1.model.monitor_formula_and_function_data_quality_monitor_options
2314+
:members:
2315+
:show-inheritance:
2316+
2317+
datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_data\_quality\_query\_definition module
2318+
------------------------------------------------------------------------------------------------------
2319+
2320+
.. automodule:: datadog_api_client.v1.model.monitor_formula_and_function_data_quality_query_definition
2321+
:members:
2322+
:show-inheritance:
2323+
22962324
datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_event\_aggregation module
22972325
----------------------------------------------------------------------------------------
22982326

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
"""
2+
Create a Data Quality monitor returns "OK" response
3+
"""
4+
5+
from datadog_api_client import ApiClient, Configuration
6+
from datadog_api_client.v1.api.monitors_api import MonitorsApi
7+
from datadog_api_client.v1.model.monitor import Monitor
8+
from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_data_source import (
9+
MonitorFormulaAndFunctionDataQualityDataSource,
10+
)
11+
from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_query_definition import (
12+
MonitorFormulaAndFunctionDataQualityQueryDefinition,
13+
)
14+
from datadog_api_client.v1.model.monitor_options import MonitorOptions
15+
from datadog_api_client.v1.model.monitor_thresholds import MonitorThresholds
16+
from datadog_api_client.v1.model.monitor_type import MonitorType
17+
18+
body = Monitor(
19+
name="Example-Monitor",
20+
type=MonitorType.DATA_QUALITY_ALERT,
21+
query='formula("query1").last("5m") > 100',
22+
message="Data quality alert triggered",
23+
tags=[
24+
"test:examplemonitor",
25+
"env:ci",
26+
],
27+
priority=3,
28+
options=MonitorOptions(
29+
thresholds=MonitorThresholds(
30+
critical=100.0,
31+
),
32+
variables=[
33+
MonitorFormulaAndFunctionDataQualityQueryDefinition(
34+
name="query1",
35+
data_source=MonitorFormulaAndFunctionDataQualityDataSource.DATA_QUALITY_METRICS,
36+
measure="row_count",
37+
filter="search for column where `database:production AND table:users`",
38+
group_by=[
39+
"entity_id",
40+
],
41+
),
42+
],
43+
),
44+
)
45+
46+
configuration = Configuration()
47+
with ApiClient(configuration) as api_client:
48+
api_instance = MonitorsApi(api_client)
49+
response = api_instance.create_monitor(body=body)
50+
51+
print(response)
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
2+
# This product includes software developed at Datadog (https://www.datadoghq.com/).
3+
# Copyright 2019-Present Datadog, Inc.
4+
from __future__ import annotations
5+
6+
7+
from datadog_api_client.model_utils import (
8+
ModelSimple,
9+
cached_property,
10+
)
11+
12+
from typing import ClassVar
13+
14+
15+
class MonitorFormulaAndFunctionDataQualityDataSource(ModelSimple):
16+
"""
17+
Data source for data quality queries.
18+
19+
:param value: If omitted defaults to "data_quality_metrics". Must be one of ["data_quality_metrics"].
20+
:type value: str
21+
"""
22+
23+
allowed_values = {
24+
"data_quality_metrics",
25+
}
26+
DATA_QUALITY_METRICS: ClassVar["MonitorFormulaAndFunctionDataQualityDataSource"]
27+
28+
@cached_property
29+
def openapi_types(_):
30+
return {
31+
"value": (str,),
32+
}
33+
34+
35+
MonitorFormulaAndFunctionDataQualityDataSource.DATA_QUALITY_METRICS = MonitorFormulaAndFunctionDataQualityDataSource(
36+
"data_quality_metrics"
37+
)
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
2+
# This product includes software developed at Datadog (https://www.datadoghq.com/).
3+
# Copyright 2019-Present Datadog, Inc.
4+
from __future__ import annotations
5+
6+
7+
from datadog_api_client.model_utils import (
8+
ModelSimple,
9+
cached_property,
10+
)
11+
12+
from typing import ClassVar
13+
14+
15+
class MonitorFormulaAndFunctionDataQualityModelTypeOverride(ModelSimple):
16+
"""
17+
Override for the model type used in anomaly detection.
18+
19+
:param value: Must be one of ["freshness", "percentage", "any"].
20+
:type value: str
21+
"""
22+
23+
allowed_values = {
24+
"freshness",
25+
"percentage",
26+
"any",
27+
}
28+
FRESHNESS: ClassVar["MonitorFormulaAndFunctionDataQualityModelTypeOverride"]
29+
PERCENTAGE: ClassVar["MonitorFormulaAndFunctionDataQualityModelTypeOverride"]
30+
ANY: ClassVar["MonitorFormulaAndFunctionDataQualityModelTypeOverride"]
31+
32+
@cached_property
33+
def openapi_types(_):
34+
return {
35+
"value": (str,),
36+
}
37+
38+
39+
MonitorFormulaAndFunctionDataQualityModelTypeOverride.FRESHNESS = MonitorFormulaAndFunctionDataQualityModelTypeOverride(
40+
"freshness"
41+
)
42+
MonitorFormulaAndFunctionDataQualityModelTypeOverride.PERCENTAGE = (
43+
MonitorFormulaAndFunctionDataQualityModelTypeOverride("percentage")
44+
)
45+
MonitorFormulaAndFunctionDataQualityModelTypeOverride.ANY = MonitorFormulaAndFunctionDataQualityModelTypeOverride("any")
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
2+
# This product includes software developed at Datadog (https://www.datadoghq.com/).
3+
# Copyright 2019-Present Datadog, Inc.
4+
from __future__ import annotations
5+
6+
from typing import List, Union, TYPE_CHECKING
7+
8+
from datadog_api_client.model_utils import (
9+
ModelNormal,
10+
cached_property,
11+
unset,
12+
UnsetType,
13+
)
14+
15+
16+
if TYPE_CHECKING:
17+
from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_model_type_override import (
18+
MonitorFormulaAndFunctionDataQualityModelTypeOverride,
19+
)
20+
21+
22+
class MonitorFormulaAndFunctionDataQualityMonitorOptions(ModelNormal):
23+
@cached_property
24+
def openapi_types(_):
25+
from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_model_type_override import (
26+
MonitorFormulaAndFunctionDataQualityModelTypeOverride,
27+
)
28+
29+
return {
30+
"crontab_override": (str,),
31+
"custom_sql": (str,),
32+
"custom_where": (str,),
33+
"group_by_columns": ([str],),
34+
"model_type_override": (MonitorFormulaAndFunctionDataQualityModelTypeOverride,),
35+
}
36+
37+
attribute_map = {
38+
"crontab_override": "crontab_override",
39+
"custom_sql": "custom_sql",
40+
"custom_where": "custom_where",
41+
"group_by_columns": "group_by_columns",
42+
"model_type_override": "model_type_override",
43+
}
44+
45+
def __init__(
46+
self_,
47+
crontab_override: Union[str, UnsetType] = unset,
48+
custom_sql: Union[str, UnsetType] = unset,
49+
custom_where: Union[str, UnsetType] = unset,
50+
group_by_columns: Union[List[str], UnsetType] = unset,
51+
model_type_override: Union[MonitorFormulaAndFunctionDataQualityModelTypeOverride, UnsetType] = unset,
52+
**kwargs,
53+
):
54+
"""
55+
Monitor configuration options for data quality queries.
56+
57+
:param crontab_override: Crontab expression to override the default schedule.
58+
:type crontab_override: str, optional
59+
60+
:param custom_sql: Custom SQL query for the monitor.
61+
:type custom_sql: str, optional
62+
63+
:param custom_where: Custom WHERE clause for the query.
64+
:type custom_where: str, optional
65+
66+
:param group_by_columns: Columns to group results by.
67+
:type group_by_columns: [str], optional
68+
69+
:param model_type_override: Override for the model type used in anomaly detection.
70+
:type model_type_override: MonitorFormulaAndFunctionDataQualityModelTypeOverride, optional
71+
"""
72+
if crontab_override is not unset:
73+
kwargs["crontab_override"] = crontab_override
74+
if custom_sql is not unset:
75+
kwargs["custom_sql"] = custom_sql
76+
if custom_where is not unset:
77+
kwargs["custom_where"] = custom_where
78+
if group_by_columns is not unset:
79+
kwargs["group_by_columns"] = group_by_columns
80+
if model_type_override is not unset:
81+
kwargs["model_type_override"] = model_type_override
82+
super().__init__(kwargs)

0 commit comments

Comments
 (0)