Update metric SQL model
https://api.datadoghq.com/api/v2/experiments/metric-sql-models/{metric_sql_model_id}https://api.us3.datadoghq.com/api/v2/experiments/metric-sql-models/{metric_sql_model_id}https://api.us5.datadoghq.com/api/v2/experiments/metric-sql-models/{metric_sql_model_id}https://api.datadoghq.eu/api/v2/experiments/metric-sql-models/{metric_sql_model_id}https://api.ap1.datadoghq.com/api/v2/experiments/metric-sql-models/{metric_sql_model_id}https://api.ap2.datadoghq.com/api/v2/experiments/metric-sql-models/{metric_sql_model_id}https://api.uk1.datadoghq.com/api/v2/experiments/metric-sql-models/{metric_sql_model_id}https://api.ddog-gov.com/api/v2/experiments/metric-sql-models/{metric_sql_model_id}https://api.us2.ddog-gov.com/api/v2/experiments/metric-sql-models/{metric_sql_model_id}Overview
Replace a metric SQL model. This is a destructive full replace: subject types, customer-defined measures, and properties absent from the body are deleted, so send the complete set. Properties are matched by name; changing a property's column, type, or description preserves its ID. column_type is required for every measure and property. Removing a measure or property that an active metric references returns 409 Conflict. Server-generated IDs returned by GET are read-only and can be left in a replayed body. The response reports removals in meta.deleted_subject_types, meta.deleted_measures, and meta.deleted_properties. Certification is read-only. Certified models cannot be replaced through this endpoint.
OAuth apps require the product_analytics_warehouse_model_write authorization scope to access this endpoint.
Arguments
Path Parameters
metric_sql_model_id [required]The UUID of the metric SQL model.
Request
Body Data (required)
data [required]Metric SQL model resource to create.
attributes [required]Complete column mappings and query used to replace the metric SQL model.
date_partition_columnSQL column used to partition the source data by date.
descriptionText that explains the metric SQL model.
measuresMeasures available from the SQL model's result columns.
column_name [required]SQL result column that contains the measure values.
column_type [required]Data type of a column in the SQL model.
STRING, INTEGER, FLOAT, BOOLEAN, DATE, TIMESTAMPdescriptionDescription of the measure.
migration_metadataMetadata associated with migration of this resource.
nameDisplay name of the measure.
migration_metadataMetadata retained for resources imported from another system.
name [required]Display name of the metric SQL model.
propertiesProperty columns exposed by the SQL model.
column_name [required]Name of the SQL result column that supplies this property.
column_type [required]Data type of a column in the SQL model.
STRING, INTEGER, FLOAT, BOOLEAN, DATE, TIMESTAMPdescriptionOptional text that explains what this property represents.
migration_metadataOpaque metadata preserved when this property is migrated.
name [required]Name used to identify the property in the model.
sql [required]SQL query that produces the model's source data.
subject_types [required]Subject types mapped to columns in the SQL model.
column_name [required]SQL result column that contains the subject identifier.
subject_type_id [required]Identifier of the subject type mapped to this column.
timestamp_column [required]SQL column that supplies the event timestamp.
idOptional JSON:API resource identifier field.
type [required]Metric SQL models resource type.
metric-sql-modelsmetric-sql-models{
"data": {
"attributes": {
"date_partition_column": null,
"description": null,
"measures": [
{
"column_name": "revenue",
"column_type": "STRING",
"description": null,
"migration_metadata": "undefined",
"name": null
}
],
"migration_metadata": "undefined",
"name": "Order facts",
"properties": [
{
"column_name": "item_type",
"column_type": "STRING",
"description": null,
"migration_metadata": "undefined",
"name": "item_type"
}
],
"sql": "SELECT user_id, order_id, item_type, revenue, created_at FROM analytics.orders",
"subject_types": [
{
"column_name": "user_id",
"subject_type_id": "550e8400-e29b-41d4-a716-446655440010"
}
],
"timestamp_column": "created_at"
},
"id": "string",
"type": "metric-sql-models"
}
}Response
OK
Updated metric SQL model and its removed entries.
data [required]JSON:API resource containing the metric SQL model identity and fields.
attributesDetails of the metric SQL model.
certified_atTime when this resource was certified.
created_atTime when this resource was created.
date_partition_columnSQL column used to partition the source data by date.
descriptionText that explains the metric SQL model.
event_count_measure_idRead-only measure ID. Pass it as warehouse_metric_measure.id when the metric operation is count.
experiment_countNumber of experiments that reference this resource.
is_certifiedWhether this resource has been certified.
measuresMeasures available from the SQL model's result columns.
column_nameName of the SQL result column that supplies this measure.
column_typeData type of a column in the SQL model.
STRING, INTEGER, FLOAT, BOOLEAN, DATE, TIMESTAMPdescriptionText that explains the measure.
idID of the measure.
migration_metadataMetadata retained for resources imported from another system.
nameDisplay name of the measure.
metric_countNumber of metrics that use this SQL model.
migration_metadataMetadata retained for resources imported from another system.
nameDisplay name of the metric SQL model.
propertiesProperty columns exposed by the SQL model.
column_nameName of the SQL result column that supplies this measure.
column_typeData type of a column in the SQL model.
STRING, INTEGER, FLOAT, BOOLEAN, DATE, TIMESTAMPdescriptionText that explains the measure.
idID of the measure.
migration_metadataMetadata retained for resources imported from another system.
nameDisplay name of the measure.
sqlSQL query that produces the model's source data.
subject_typesSubject types mapped to columns in the SQL model.
column_nameName of the SQL result column that identifies subjects of this type.
subject_type_idID of the subject type used by this configuration.
unique_subject_count_measure_idRead-only measure ID. Pass it as warehouse_metric_measure.id when the metric operation is uniqueSubjects.
timestamp_columnSQL column that supplies the event timestamp.
updated_atTime when this resource was last updated.
id [required]ID of the metric SQL model.
type [required]Metric SQL models resource type.
metric-sql-modelsmetric-sql-modelsmetaModel entries removed by the update. Empty arrays mean no entries were removed.
deleted_measuresMeasure column names removed from the model.
deleted_propertiesProperty names removed from the model.
deleted_subject_typesSubject type IDs removed from the model.
{
"data": {
"attributes": {
"created_at": "2024-01-01T12:00:00Z",
"event_count_measure_id": "550e8400-e29b-41d4-a716-446655440024",
"is_certified": false,
"measures": [
{
"column_name": "revenue",
"column_type": "FLOAT",
"id": "550e8400-e29b-41d4-a716-446655440021",
"name": "revenue"
}
],
"name": "Order facts",
"properties": [
{
"column_name": "item_type",
"column_type": "STRING",
"id": "550e8400-e29b-41d4-a716-446655440023",
"name": "item_type"
}
],
"sql": "SELECT user_id, order_id, item_type, revenue, created_at FROM analytics.orders",
"subject_types": [
{
"column_name": "user_id",
"subject_type_id": "550e8400-e29b-41d4-a716-446655440010",
"unique_subject_count_measure_id": "550e8400-e29b-41d4-a716-446655440022"
}
],
"timestamp_column": "created_at",
"updated_at": "2024-01-01T12:00:00Z"
},
"id": "550e8400-e29b-41d4-a716-446655440020",
"type": "metric-sql-models"
}
}Malformed ID or body, validation failure, or the SQL was rejected by the warehouse validator.
API error response.
errors [required]A list of errors.
detailA human-readable explanation specific to this occurrence of the error.
metaNon-standard meta-information about the error
sourceReferences to the source of the error.
headerA string indicating the name of a single request header which caused the error.
parameterA string indicating which URI query parameter caused the error.
pointerA JSON pointer to the value in the request document that caused the error.
statusStatus code of the response.
titleShort human-readable summary of the error.
{
"errors": [
{
"detail": "Missing required attribute in body",
"meta": {},
"source": {
"header": "Authorization",
"parameter": "limit",
"pointer": "/data/attributes/title"
},
"status": "400",
"title": "Bad Request"
}
]
}Missing or invalid authentication.
API error response.
errors [required]A list of errors.
detailA human-readable explanation specific to this occurrence of the error.
metaNon-standard meta-information about the error
sourceReferences to the source of the error.
headerA string indicating the name of a single request header which caused the error.
parameterA string indicating which URI query parameter caused the error.
pointerA JSON pointer to the value in the request document that caused the error.
statusStatus code of the response.
titleShort human-readable summary of the error.
{
"errors": [
{
"detail": "Missing required attribute in body",
"meta": {},
"source": {
"header": "Authorization",
"parameter": "limit",
"pointer": "/data/attributes/title"
},
"status": "400",
"title": "Bad Request"
}
]
}Authenticated caller lacks the product_analytics_warehouse_model_write permission.
API error response.
errors [required]A list of errors.
detailA human-readable explanation specific to this occurrence of the error.
metaNon-standard meta-information about the error
sourceReferences to the source of the error.
headerA string indicating the name of a single request header which caused the error.
parameterA string indicating which URI query parameter caused the error.
pointerA JSON pointer to the value in the request document that caused the error.
statusStatus code of the response.
titleShort human-readable summary of the error.
{
"errors": [
{
"detail": "Missing required attribute in body",
"meta": {},
"source": {
"header": "Authorization",
"parameter": "limit",
"pointer": "/data/attributes/title"
},
"status": "400",
"title": "Bad Request"
}
]
}No metric SQL model with this ID exists for the organization.
API error response.
errors [required]A list of errors.
detailA human-readable explanation specific to this occurrence of the error.
metaNon-standard meta-information about the error
sourceReferences to the source of the error.
headerA string indicating the name of a single request header which caused the error.
parameterA string indicating which URI query parameter caused the error.
pointerA JSON pointer to the value in the request document that caused the error.
statusStatus code of the response.
titleShort human-readable summary of the error.
{
"errors": [
{
"detail": "Missing required attribute in body",
"meta": {},
"source": {
"header": "Authorization",
"parameter": "limit",
"pointer": "/data/attributes/title"
},
"status": "400",
"title": "Bad Request"
}
]
}The model is certified or managed by metric sync, or the update would remove a measure or property still used by an active metric.
API error response.
errors [required]A list of errors.
detailA human-readable explanation specific to this occurrence of the error.
metaNon-standard meta-information about the error
sourceReferences to the source of the error.
headerA string indicating the name of a single request header which caused the error.
parameterA string indicating which URI query parameter caused the error.
pointerA JSON pointer to the value in the request document that caused the error.
statusStatus code of the response.
titleShort human-readable summary of the error.
{
"errors": [
{
"detail": "Missing required attribute in body",
"meta": {},
"source": {
"header": "Authorization",
"parameter": "limit",
"pointer": "/data/attributes/title"
},
"status": "400",
"title": "Bad Request"
}
]
}Too many requests
API error response.
errors [required]A list of errors.
{
"errors": [
"Bad Request"
]
}Code Example
# Path parameters
export metric_sql_model_id="550e8400-e29b-41d4-a716-446655440000"
# Set your Datadog site and credentials
export DD_SITE="datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X PUT "https://api.${DD_SITE}/api/v2/experiments/metric-sql-models/${metric_sql_model_id}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"data": {
"attributes": {
"date_partition_column": null,
"description": null,
"measures": [
{
"column_name": "revenue",
"column_type": "FLOAT",
"description": null,
"name": null
}
],
"name": "Order facts",
"sql": "SELECT user_id, order_id, item_type, revenue, created_at FROM analytics.orders",
"subject_types": [
{
"column_name": "user_id",
"subject_type_id": "550e8400-e29b-41d4-a716-446655440010"
}
],
"timestamp_column": "created_at"
},
"type": "metric-sql-models"
}
}
EOF# Path parameters
export metric_sql_model_id="550e8400-e29b-41d4-a716-446655440000"
# Set your Datadog site and credentials
export DD_SITE="us3.datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X PUT "https://api.${DD_SITE}/api/v2/experiments/metric-sql-models/${metric_sql_model_id}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"data": {
"attributes": {
"date_partition_column": null,
"description": null,
"measures": [
{
"column_name": "revenue",
"column_type": "FLOAT",
"description": null,
"name": null
}
],
"name": "Order facts",
"sql": "SELECT user_id, order_id, item_type, revenue, created_at FROM analytics.orders",
"subject_types": [
{
"column_name": "user_id",
"subject_type_id": "550e8400-e29b-41d4-a716-446655440010"
}
],
"timestamp_column": "created_at"
},
"type": "metric-sql-models"
}
}
EOF# Path parameters
export metric_sql_model_id="550e8400-e29b-41d4-a716-446655440000"
# Set your Datadog site and credentials
export DD_SITE="us5.datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X PUT "https://api.${DD_SITE}/api/v2/experiments/metric-sql-models/${metric_sql_model_id}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"data": {
"attributes": {
"date_partition_column": null,
"description": null,
"measures": [
{
"column_name": "revenue",
"column_type": "FLOAT",
"description": null,
"name": null
}
],
"name": "Order facts",
"sql": "SELECT user_id, order_id, item_type, revenue, created_at FROM analytics.orders",
"subject_types": [
{
"column_name": "user_id",
"subject_type_id": "550e8400-e29b-41d4-a716-446655440010"
}
],
"timestamp_column": "created_at"
},
"type": "metric-sql-models"
}
}
EOF# Path parameters
export metric_sql_model_id="550e8400-e29b-41d4-a716-446655440000"
# Set your Datadog site and credentials
export DD_SITE="datadoghq.eu"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X PUT "https://api.${DD_SITE}/api/v2/experiments/metric-sql-models/${metric_sql_model_id}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"data": {
"attributes": {
"date_partition_column": null,
"description": null,
"measures": [
{
"column_name": "revenue",
"column_type": "FLOAT",
"description": null,
"name": null
}
],
"name": "Order facts",
"sql": "SELECT user_id, order_id, item_type, revenue, created_at FROM analytics.orders",
"subject_types": [
{
"column_name": "user_id",
"subject_type_id": "550e8400-e29b-41d4-a716-446655440010"
}
],
"timestamp_column": "created_at"
},
"type": "metric-sql-models"
}
}
EOF# Path parameters
export metric_sql_model_id="550e8400-e29b-41d4-a716-446655440000"
# Set your Datadog site and credentials
export DD_SITE="ap1.datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X PUT "https://api.${DD_SITE}/api/v2/experiments/metric-sql-models/${metric_sql_model_id}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"data": {
"attributes": {
"date_partition_column": null,
"description": null,
"measures": [
{
"column_name": "revenue",
"column_type": "FLOAT",
"description": null,
"name": null
}
],
"name": "Order facts",
"sql": "SELECT user_id, order_id, item_type, revenue, created_at FROM analytics.orders",
"subject_types": [
{
"column_name": "user_id",
"subject_type_id": "550e8400-e29b-41d4-a716-446655440010"
}
],
"timestamp_column": "created_at"
},
"type": "metric-sql-models"
}
}
EOF# Path parameters
export metric_sql_model_id="550e8400-e29b-41d4-a716-446655440000"
# Set your Datadog site and credentials
export DD_SITE="ap2.datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X PUT "https://api.${DD_SITE}/api/v2/experiments/metric-sql-models/${metric_sql_model_id}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"data": {
"attributes": {
"date_partition_column": null,
"description": null,
"measures": [
{
"column_name": "revenue",
"column_type": "FLOAT",
"description": null,
"name": null
}
],
"name": "Order facts",
"sql": "SELECT user_id, order_id, item_type, revenue, created_at FROM analytics.orders",
"subject_types": [
{
"column_name": "user_id",
"subject_type_id": "550e8400-e29b-41d4-a716-446655440010"
}
],
"timestamp_column": "created_at"
},
"type": "metric-sql-models"
}
}
EOF# Path parameters
export metric_sql_model_id="550e8400-e29b-41d4-a716-446655440000"
# Set your Datadog site and credentials
export DD_SITE="uk1.datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X PUT "https://api.${DD_SITE}/api/v2/experiments/metric-sql-models/${metric_sql_model_id}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"data": {
"attributes": {
"date_partition_column": null,
"description": null,
"measures": [
{
"column_name": "revenue",
"column_type": "FLOAT",
"description": null,
"name": null
}
],
"name": "Order facts",
"sql": "SELECT user_id, order_id, item_type, revenue, created_at FROM analytics.orders",
"subject_types": [
{
"column_name": "user_id",
"subject_type_id": "550e8400-e29b-41d4-a716-446655440010"
}
],
"timestamp_column": "created_at"
},
"type": "metric-sql-models"
}
}
EOF# Path parameters
export metric_sql_model_id="550e8400-e29b-41d4-a716-446655440000"
# Set your Datadog site and credentials
export DD_SITE="ddog-gov.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X PUT "https://api.${DD_SITE}/api/v2/experiments/metric-sql-models/${metric_sql_model_id}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"data": {
"attributes": {
"date_partition_column": null,
"description": null,
"measures": [
{
"column_name": "revenue",
"column_type": "FLOAT",
"description": null,
"name": null
}
],
"name": "Order facts",
"sql": "SELECT user_id, order_id, item_type, revenue, created_at FROM analytics.orders",
"subject_types": [
{
"column_name": "user_id",
"subject_type_id": "550e8400-e29b-41d4-a716-446655440010"
}
],
"timestamp_column": "created_at"
},
"type": "metric-sql-models"
}
}
EOF# Path parameters
export metric_sql_model_id="550e8400-e29b-41d4-a716-446655440000"
# Set your Datadog site and credentials
export DD_SITE="us2.ddog-gov.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X PUT "https://api.${DD_SITE}/api/v2/experiments/metric-sql-models/${metric_sql_model_id}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"data": {
"attributes": {
"date_partition_column": null,
"description": null,
"measures": [
{
"column_name": "revenue",
"column_type": "FLOAT",
"description": null,
"name": null
}
],
"name": "Order facts",
"sql": "SELECT user_id, order_id, item_type, revenue, created_at FROM analytics.orders",
"subject_types": [
{
"column_name": "user_id",
"subject_type_id": "550e8400-e29b-41d4-a716-446655440010"
}
],
"timestamp_column": "created_at"
},
"type": "metric-sql-models"
}
}
EOF// Update metric SQL model returns "OK" response
package main
import (
"context"
"encoding/json"
"fmt"
"os"
"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
"github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
"github.com/google/uuid"
)
func main() {
body := datadogV2.ExperimentsCreateMetricSQLModelV2Request{
Data: datadogV2.ExperimentsCreateMetricSQLModelV2RequestData{
Attributes: datadogV2.ExperimentsUpdateMetricSQLModelV2RequestDataAttributes{
DatePartitionColumn: *datadog.NewNullableString(nil),
Description: *datadog.NewNullableString(nil),
Measures: []datadogV2.ExperimentsCreateMetricSQLModelV2RequestDataAttributesMeasuresItems{
{
ColumnName: "revenue",
ColumnType: datadogV2.EXPERIMENTSCREATEEXPOSURESQLMODELV2REQUESTDATAATTRIBUTESITEMSCOLUMNTYPE_FLOAT,
Description: *datadog.NewNullableString(nil),
Name: *datadog.NewNullableString(nil),
},
},
Name: "Order facts",
Properties: []datadogV2.ExperimentsMetricSQLModelPropertyInput{
{
ColumnName: "item_type",
ColumnType: datadogV2.EXPERIMENTSCREATEEXPOSURESQLMODELV2REQUESTDATAATTRIBUTESITEMSCOLUMNTYPE_STRING,
Description: *datadog.NewNullableString(nil),
Name: "item_type",
},
},
Sql: "SELECT user_id, order_id, item_type, revenue, created_at FROM analytics.orders",
SubjectTypes: []datadogV2.ExperimentsCreateExposureSQLModelV2RequestDataAttributesSubjectTypesItems{
{
ColumnName: "user_id",
SubjectTypeId: "550e8400-e29b-41d4-a716-446655440010",
},
},
TimestampColumn: "created_at",
},
Type: datadogV2.EXPERIMENTSUPDATEMETRICSQLMODELV2REQUESTDATATYPE_METRIC_SQL_MODELS,
},
}
ctx := datadog.NewDefaultContext(context.Background())
ctx = context.WithValue(ctx, datadog.ContextAccessToken, os.Getenv("DD_BEARER_TOKEN"))
configuration := datadog.NewConfiguration()
apiClient := datadog.NewAPIClient(configuration)
api := datadogV2.NewExperimentsApi(apiClient)
resp, r, err := api.UpdateMetricSQLModel(ctx, uuid.MustParse("550e8400-e29b-41d4-a716-446655440000"), body)
if err != nil {
fmt.Fprintf(os.Stderr, "Error when calling `ExperimentsApi.UpdateMetricSQLModel`: %v\n", err)
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
}
responseContent, _ := json.MarshalIndent(resp, "", " ")
fmt.Fprintf(os.Stdout, "Response from `ExperimentsApi.UpdateMetricSQLModel`:\n%s\n", responseContent)
}
Instructions
First install the library and its dependencies and then save the example to main.go and run following commands:
DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="us3.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="us5.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="datadoghq.eu" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="ap1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="ap2.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="uk1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="us2.ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"// Update metric SQL model returns "OK" response
import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v2.api.ExperimentsApi;
import com.datadog.api.client.v2.model.ExperimentsCreateExposureSQLModelV2RequestDataAttributesItemsColumnType;
import com.datadog.api.client.v2.model.ExperimentsCreateExposureSQLModelV2RequestDataAttributesSubjectTypesItems;
import com.datadog.api.client.v2.model.ExperimentsCreateMetricSQLModelV2Request;
import com.datadog.api.client.v2.model.ExperimentsCreateMetricSQLModelV2RequestData;
import com.datadog.api.client.v2.model.ExperimentsCreateMetricSQLModelV2RequestDataAttributesMeasuresItems;
import com.datadog.api.client.v2.model.ExperimentsMetricSQLModelPropertyInput;
import com.datadog.api.client.v2.model.ExperimentsUpdateMetricSQLModelV2RequestDataAttributes;
import com.datadog.api.client.v2.model.ExperimentsUpdateMetricSQLModelV2RequestDataType;
import com.datadog.api.client.v2.model.ExperimentsUpdateMetricSQLModelV2Response;
import java.util.Collections;
import java.util.UUID;
public class Example {
public static void main(String[] args) {
ApiClient defaultClient = ApiClient.getDefaultApiClient();
defaultClient.setAccessToken(System.getenv("DD_BEARER_TOKEN"));
ExperimentsApi apiInstance = new ExperimentsApi(defaultClient);
ExperimentsCreateMetricSQLModelV2Request body =
new ExperimentsCreateMetricSQLModelV2Request()
.data(
new ExperimentsCreateMetricSQLModelV2RequestData()
.attributes(
new ExperimentsUpdateMetricSQLModelV2RequestDataAttributes()
.datePartitionColumn(null)
.description(null)
.measures(
Collections.singletonList(
new ExperimentsCreateMetricSQLModelV2RequestDataAttributesMeasuresItems()
.columnName("revenue")
.columnType(
ExperimentsCreateExposureSQLModelV2RequestDataAttributesItemsColumnType
.FLOAT)
.description(null)
.name(null)))
.name("Order facts")
.properties(
Collections.singletonList(
new ExperimentsMetricSQLModelPropertyInput()
.columnName("item_type")
.columnType(
ExperimentsCreateExposureSQLModelV2RequestDataAttributesItemsColumnType
.STRING)
.description(null)
.name("item_type")))
.sql(
"SELECT user_id, order_id, item_type, revenue, created_at FROM"
+ " analytics.orders")
.subjectTypes(
Collections.singletonList(
new ExperimentsCreateExposureSQLModelV2RequestDataAttributesSubjectTypesItems()
.columnName("user_id")
.subjectTypeId("550e8400-e29b-41d4-a716-446655440010")))
.timestampColumn("created_at"))
.type(ExperimentsUpdateMetricSQLModelV2RequestDataType.METRIC_SQL_MODELS));
try {
ExperimentsUpdateMetricSQLModelV2Response result =
apiInstance.updateMetricSQLModel(
UUID.fromString("550e8400-e29b-41d4-a716-446655440000"), body);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ExperimentsApi#updateMetricSQLModel");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}
Instructions
First install the library and its dependencies and then save the example to Example.java and run following commands:
DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="us3.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="us5.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="datadoghq.eu" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="ap1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="ap2.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="uk1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="us2.ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java""""
Update metric SQL model returns "OK" response
"""
from os import environ
from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v2.api.experiments_api import ExperimentsApi
from datadog_api_client.v2.model.experiments_create_exposure_sql_model_v2_request_data_attributes_items_column_type import (
ExperimentsCreateExposureSQLModelV2RequestDataAttributesItemsColumnType,
)
from datadog_api_client.v2.model.experiments_create_exposure_sql_model_v2_request_data_attributes_subject_types_items import (
ExperimentsCreateExposureSQLModelV2RequestDataAttributesSubjectTypesItems,
)
from datadog_api_client.v2.model.experiments_create_metric_sql_model_v2_request import (
ExperimentsCreateMetricSQLModelV2Request,
)
from datadog_api_client.v2.model.experiments_create_metric_sql_model_v2_request_data import (
ExperimentsCreateMetricSQLModelV2RequestData,
)
from datadog_api_client.v2.model.experiments_create_metric_sql_model_v2_request_data_attributes_measures_items import (
ExperimentsCreateMetricSQLModelV2RequestDataAttributesMeasuresItems,
)
from datadog_api_client.v2.model.experiments_metric_sql_model_property_input import (
ExperimentsMetricSQLModelPropertyInput,
)
from datadog_api_client.v2.model.experiments_update_metric_sql_model_v2_request_data_attributes import (
ExperimentsUpdateMetricSQLModelV2RequestDataAttributes,
)
from datadog_api_client.v2.model.experiments_update_metric_sql_model_v2_request_data_type import (
ExperimentsUpdateMetricSQLModelV2RequestDataType,
)
from uuid import UUID
body = ExperimentsCreateMetricSQLModelV2Request(
data=ExperimentsCreateMetricSQLModelV2RequestData(
attributes=ExperimentsUpdateMetricSQLModelV2RequestDataAttributes(
date_partition_column=None,
description=None,
measures=[
ExperimentsCreateMetricSQLModelV2RequestDataAttributesMeasuresItems(
column_name="revenue",
column_type=ExperimentsCreateExposureSQLModelV2RequestDataAttributesItemsColumnType.FLOAT,
description=None,
name=None,
),
],
name="Order facts",
properties=[
ExperimentsMetricSQLModelPropertyInput(
column_name="item_type",
column_type=ExperimentsCreateExposureSQLModelV2RequestDataAttributesItemsColumnType.STRING,
description=None,
name="item_type",
),
],
sql="SELECT user_id, order_id, item_type, revenue, created_at FROM analytics.orders",
subject_types=[
ExperimentsCreateExposureSQLModelV2RequestDataAttributesSubjectTypesItems(
column_name="user_id",
subject_type_id="550e8400-e29b-41d4-a716-446655440010",
),
],
timestamp_column="created_at",
),
type=ExperimentsUpdateMetricSQLModelV2RequestDataType.METRIC_SQL_MODELS,
),
)
configuration = Configuration()
configuration.access_token = environ["DD_BEARER_TOKEN"]
with ApiClient(configuration) as api_client:
api_instance = ExperimentsApi(api_client)
response = api_instance.update_metric_sql_model(
metric_sql_model_id=UUID("550e8400-e29b-41d4-a716-446655440000"), body=body
)
print(response)
Instructions
First install the library and its dependencies and then save the example to example.py and run following commands:
DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="us3.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="us5.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="datadoghq.eu" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="ap1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="ap2.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="uk1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="us2.ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"# Update metric SQL model returns "OK" response
require "datadog_api_client"
DatadogAPIClient.configure do |config|
config.access_token = ENV["DD_BEARER_TOKEN"]
end
api_instance = DatadogAPIClient::V2::ExperimentsAPI.new
body = DatadogAPIClient::V2::ExperimentsCreateMetricSQLModelV2Request.new({
data: DatadogAPIClient::V2::ExperimentsCreateMetricSQLModelV2RequestData.new({
attributes: DatadogAPIClient::V2::ExperimentsUpdateMetricSQLModelV2RequestDataAttributes.new({
date_partition_column: nil,
description: nil,
measures: [
DatadogAPIClient::V2::ExperimentsCreateMetricSQLModelV2RequestDataAttributesMeasuresItems.new({
column_name: "revenue",
column_type: DatadogAPIClient::V2::ExperimentsCreateExposureSQLModelV2RequestDataAttributesItemsColumnType::FLOAT,
description: nil,
name: nil,
}),
],
name: "Order facts",
properties: [
DatadogAPIClient::V2::ExperimentsMetricSQLModelPropertyInput.new({
column_name: "item_type",
column_type: DatadogAPIClient::V2::ExperimentsCreateExposureSQLModelV2RequestDataAttributesItemsColumnType::STRING,
description: nil,
name: "item_type",
}),
],
sql: "SELECT user_id, order_id, item_type, revenue, created_at FROM analytics.orders",
subject_types: [
DatadogAPIClient::V2::ExperimentsCreateExposureSQLModelV2RequestDataAttributesSubjectTypesItems.new({
column_name: "user_id",
subject_type_id: "550e8400-e29b-41d4-a716-446655440010",
}),
],
timestamp_column: "created_at",
}),
type: DatadogAPIClient::V2::ExperimentsUpdateMetricSQLModelV2RequestDataType::METRIC_SQL_MODELS,
}),
})
p api_instance.update_metric_sql_model("550e8400-e29b-41d4-a716-446655440000", body)
Instructions
First install the library and its dependencies and then save the example to example.rb and run following commands:
DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="us3.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="us5.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="datadoghq.eu" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="ap1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="ap2.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="uk1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="us2.ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"// Update metric SQL model returns "OK" response
use datadog_api_client::datadog;
use datadog_api_client::datadogV2::api_experiments::ExperimentsAPI;
use datadog_api_client::datadogV2::model::ExperimentsCreateExposureSQLModelV2RequestDataAttributesItemsColumnType;
use datadog_api_client::datadogV2::model::ExperimentsCreateExposureSQLModelV2RequestDataAttributesSubjectTypesItems;
use datadog_api_client::datadogV2::model::ExperimentsCreateMetricSQLModelV2Request;
use datadog_api_client::datadogV2::model::ExperimentsCreateMetricSQLModelV2RequestData;
use datadog_api_client::datadogV2::model::ExperimentsCreateMetricSQLModelV2RequestDataAttributesMeasuresItems;
use datadog_api_client::datadogV2::model::ExperimentsMetricSQLModelPropertyInput;
use datadog_api_client::datadogV2::model::ExperimentsUpdateMetricSQLModelV2RequestDataAttributes;
use datadog_api_client::datadogV2::model::ExperimentsUpdateMetricSQLModelV2RequestDataType;
use uuid::Uuid;
#[tokio::main]
async fn main() {
let body = ExperimentsCreateMetricSQLModelV2Request::new(
ExperimentsCreateMetricSQLModelV2RequestData::new(
ExperimentsUpdateMetricSQLModelV2RequestDataAttributes::new(
"Order facts".to_string(),
"SELECT user_id, order_id, item_type, revenue, created_at FROM analytics.orders"
.to_string(),
vec![
ExperimentsCreateExposureSQLModelV2RequestDataAttributesSubjectTypesItems::new(
"user_id".to_string(),
"550e8400-e29b-41d4-a716-446655440010".to_string(),
),
],
"created_at".to_string(),
)
.date_partition_column(None)
.description(None)
.measures(vec![
ExperimentsCreateMetricSQLModelV2RequestDataAttributesMeasuresItems::new(
"revenue".to_string(),
ExperimentsCreateExposureSQLModelV2RequestDataAttributesItemsColumnType::FLOAT,
)
.description(None)
.name(None),
])
.properties(vec![ExperimentsMetricSQLModelPropertyInput::new(
"item_type".to_string(),
ExperimentsCreateExposureSQLModelV2RequestDataAttributesItemsColumnType::STRING,
"item_type".to_string(),
)
.description(None)]),
ExperimentsUpdateMetricSQLModelV2RequestDataType::METRIC_SQL_MODELS,
),
);
let configuration = datadog::Configuration::new();
let api = ExperimentsAPI::with_config(configuration);
let resp = api
.update_metric_sql_model(
Uuid::parse_str("550e8400-e29b-41d4-a716-446655440000").expect("invalid UUID"),
body,
)
.await;
if let Ok(value) = resp {
println!("{:#?}", value);
} else {
println!("{:#?}", resp.unwrap_err());
}
}
Instructions
First install the library and its dependencies and then save the example to src/main.rs and run following commands:
DD_SITE="datadoghq.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="us3.datadoghq.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="us5.datadoghq.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="datadoghq.eu" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="ap1.datadoghq.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="ap2.datadoghq.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="uk1.datadoghq.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="us2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo run