DDSQL es SQL para datos de Datadog. Implementa varias operaciones SQL estándar, como SELECT, y permite realizar consultas de datos no estructurados. Puedes realizar acciones, como obtener exactamente los datos que buscas, escribiendo tu propia sentencia SELECT, o consultar etiquetas (tags) como si fueran columnas de tablas estándar.
Esta documentación cubre el soporte SQL disponible e incluye:
Esta cláusula es una abreviatura para uniones en las que las columnas unidas tienen el mismo nombre en ambas tablas. Toma una lista separada por comas de esas columnas y crea una condición de igualdad independiente para cada par coincidente. Por ejemplo, unir T1 y T2 con USING (a, b) equivale a ON T1.a = T2.a AND T1.b = T2.b.
Intervalo que representa una duración de tiempo especificada en una unidad determinada.
Unidades admitidas: - milliseconds/millisecond - seconds/second - minutes/minute - hours/hour - days/day
Tipos de datos
DDSQL admite los siguientes tipos de datos:
Tipo de datos
Descripción
BIGINT
Enteros con signo de 64 bits.
BOOLEAN
Valores true o false.
DOUBLE
Números de coma flotante de doble precisión.
INTERVAL
Valores de duración.
JSON
Datos JSON.
TIMESTAMP
Valores de fecha y hora.
VARCHAR
Cadenas de caracteres de longitud variable.
Tipos de matrices
Todos los tipos de datos admiten tipos de matrices. Las matrices pueden contener varios valores del mismo tipo de datos.
Tipos literales
DDSQL admite tipos literales explícitos utilizando la sintaxis [TYPE] [value].
Tipo
Sintaxis
Ejemplo
BIGINT
BIGINT value
BIGINT 1234567
BOOLEAN
BOOLEAN value
BOOLEAN true
DOUBLE
DOUBLE value
DOUBLE 3.14159
INTERVAL
INTERVAL 'value unit'
INTERVAL '30 minutes'
JSON
JSON 'value'
JSON '{"key": "value", "count": 42}'
TIMESTAMP
TIMESTAMP 'value'
TIMESTAMP '2023-12-25 10:30:00'
VARCHAR
VARCHAR 'value'
VARCHAR 'hello world'
El prefijo del tipo puede omitirse y el tipo se deduce automáticamente del valor. Por ejemplo, 'hello world' se deduce como VARCHAR, 123 como BIGINT y true como BOOLEAN. Utiliza prefijos de tipo explícitos cuando los valores puedan ser ambiguos. Por ejemplo,TIMESTAMP '2025-01-01' se deduciría como VARCHAR sin el prefijo.
Matrices literales
Las matrices literales utilizan la sintaxis ARRAY[value1, value2, ...]. El tipo de matriz se deduce automáticamente de los valores.
SELECTARRAY['apple','banana','cherry']ASfruits;-- Inferred as VARCHAR array
SELECTARRAY[1,2,3]ASnumbers;-- Inferred as BIGINT array
SELECTARRAY[true,false,true]ASflags;-- Inferred as BOOLEAN array
SELECTARRAY[1.1,2.2,3.3]ASdecimals;-- Inferred as DOUBLE array
Ejemplo
-- Using type literals in queries
SELECTVARCHAR'Product Name: '||nameASlabeled_name,price*DOUBLE1.08ASprice_with_tax,created_at+INTERVAL'7 days'ASexpiry_dateFROMproductsWHEREcreated_at>TIMESTAMP'2025-01-01';
Funciones
Se admiten las siguientes funciones de SQL. Para la función de ventana, consulta la sección función de ventana de esta documentación.
Función
Tipo de retorno
Descripción
MIN(variable v)
Variable typeof
Devuelve el valor más pequeño de un conjunto de datos.
MAX(variable v)
Variable typeof
Devuelve el valor máximo de todos los valores de entrada.
COUNT(any a)
numérico
Devuelve el número de valores de entrada que no son nulos.
SUM(numeric n)
numérico
Devuelve la suma de todos los valores de entrada.
AVG(numeric n)
numérico
Devuelve el valor medio (media aritmética) de todos los valores de entrada.
BOOL_AND(boolean b)
booleano
Devuelve si todos los valores de entrada no nulos son verdaderos.
BOOL_OR(boolean b)
booleano
Devuelve si cualquier valor de entrada no nulo es verdadero.
CEIL(numeric n)
numérico
Devuelve el valor redondeado al entero más próximo.
FLOOR(numeric n)
numérico
Devuelve el valor redondeado al entero más próximo.
ROUND(numeric n)
numérico
Devuelve el valor redondeado al entero más próximo.
POWER(numeric base, numeric exponent)
numérico
Devuelve el valor de la base elevado a la potencia del exponente.
LOWER(string s)
cadena
Devuelve la cadena en minúsculas.
UPPER(string s)
cadena
Devuelve la cadena en mayúsculas.
ABS(numeric n)
numérico
Devuelve el valor absoluto.
COALESCE(args a)
typeof first non-null a OR null
Devuelve el primer valor no nulo o nulo si todos son nulos.
CAST(value AS type)
tipo
Convierte el valor dado al tipo de datos especificado.
LENGTH(string s)
entero
Devuelve el número de caracteres de la cadena.
TRIM(string s)
cadena
Elimina los espacios en blanco iniciales y finales de la cadena.
REPLACE(string s, string from, string to)
cadena
Sustituye las apariciones de una subcadena dentro de una cadena por otra subcadena.
SUBSTRING(string s, int start, int length)
cadena
Extrae una subcadena de una cadena, comenzando en una posición dada y para una longitud especificada.
STRPOS(string s, string substring)
entero
Devuelve la primera posición del índice de la subcadena en una cadena dada, o 0 si no hay coincidencia.
Alinea una marca de tiempo (fuente) en buckets de longitud par (stride). Devuelve el inicio del bucket que contiene la fuente, calculado como la mayor marca de tiempo que es menor o igual que la fuente y es un múltiplo de longitudes de stride desde el origen.
DATE_TRUNC(string unit, timestamp t)
marca de tiempo
Trunca una marca de tiempo a una precisión especificada basada en la unidad proporcionada.
CURRENT_SETTING(string setting_name)
cadena
Devuelve el valor actual del parámetro especificado. Admite los parámetros dd.time_frame_start y dd.time_frame_end, que devuelven el inicio y el final del marco temporal global, respectivamente.
NOW()
marca de tiempo
Devuelve la marca de tiempo actual al inicio de la consulta actual.
CARDINALITY(array a)
entero
Devuelve el número de elementos de la matriz.
ARRAY_POSITION(array a, typeof_array value)
entero
Devuelve el índice de la primera aparición del valor encontrado en la matriz, o null (nulo) si no se encuentra el valor.
STRING_TO_ARRAY(string s, string delimiter)
matriz de cadenas
Divide la cadena dada en una matriz de cadenas utilizando el delimitador dado.
ARRAY_AGG(expression e)
matriz de tipo de entrada
Crea una matriz al recopilar todos los valores de entrada.
UNNEST(array a [, array b...])
filas de a [, b…]
Expande matrices en un conjunto de filas. Esta forma sólo se permite en una cláusula FROM.
dd.time_frame_start: Devuelve el inicio de la marca de tiempo seleccionada en formato RFC 3339 (YYYY-MM-DD HH:mm:ss.sss±HH:mm).
dd.time_frame_end: Devuelve el final de la marca de tiempo seleccionada en formato RFC 3339 (YYYY-MM-DD HH:mm:ss.sss±HH:mm).
-- Define the current analysis window
WITHboundsAS(SELECTCAST(CURRENT_SETTING('dd.time_frame_start')ASTIMESTAMP)AStime_frame_start,CAST(CURRENT_SETTING('dd.time_frame_end')ASTIMESTAMP)AStime_frame_end),-- Define the immediately preceding window of equal length
previous_boundsAS(SELECTtime_frame_start-(time_frame_end-time_frame_start)ASprev_time_frame_start,time_frame_startASprev_time_frame_endFROMbounds)SELECT*FROMbounds,previous_bounds
Devuelve las subcadenas de la primera coincidencia de patrón en la cadena.
Esta función busca en la cadena de entrada utilizando el patrón dado y devuelve las subcadenas capturadas (grupos de captura) de la primera coincidencia. Si no hay grupos de captura, devuelve la coincidencia completa.
Esta tabla proporciona información general de las funciones de ventana admitidas. Para ver más detalles y ejemplos, consulte la documentación de PostgreSQL.
Función
Tipo de retorno
Descripción
OVER
N/A
Define una ventana para un conjunto de filas sobre las que pueden operar otras funciones de ventana.
PARTITION BY
N/A
Divide el conjunto de resultados en particiones, específicamente para aplicar funciones de ventana.
RANK()
entero
Asigna un rango a cada fila dentro de una partición, con espacios para los empates.
ROW_NUMBER()
entero
Asigna un número secuencial único a cada fila dentro de una partición.
LEAD(column n)
columna typeof
Devuelve el valor de la siguiente fila de la partición.
LAG(column n)
columna typeof
Devuelve el valor de la fila anterior de la partición.
FIRST_VALUE(column n)
columna typeof
Devuelve el primer valor de un conjunto ordenado de valores.
LAST_VALUE(column n)
columna typeof
Devuelve el último valor de un conjunto ordenado de valores.
NTH_VALUE(column n, offset)
columna typeof
Devuelve el valor en el desplazamiento especificado en un conjunto ordenado de valores.
Funciones y operadores JSON
Nombre
Tipo de devolución
Descripción
json_extract_path_text(text json, text path…)
texto
Extrae un subobjeto JSON como texto, definido por la ruta. Su comportamiento es equivalente a la función Postgres del mismo nombre. Por ejemplo, json_extract_path_text(col, ‘forest') devuelve el valor de la clave forest para cada objeto JSON en col. Consulta el ejemplo siguiente para ver la sintaxis de una matriz JSON.
json_extract_path(text json, text path…)
JSON
Misma funcionalidad que json_extract_path_text, pero devuelve una columna de tipo JSON en lugar de tipo texto.
json_array_elements(text json)
filas de JSON
Expande una matriz JSON en un conjunto de filas. Esta forma solo se permite en una cláusula FROM.
json_array_elements_text(text json)
filas de texto
Expande una matriz JSON en un conjunto de filas. Esta forma solo se permite en una cláusula FROM.
Funciones de tabla
Join the Preview!
La consulta de logs y métricas mediante DDSQL está en vista previa. Utiliza este formulario para solicitar accesso.
Devuelve los datos de logs en forma de tabla. El parámetro de columna especifica qué campos de log extraer, y la cláusula AS define el esquema de la tabla devuelta. Opcional: Filtrado por índice o rango temporal. Si no se especifica la hora, se utilizará por defecto la última hora de los datos.
Devuelve datos de métricas como un valor escalar. La función acepta una consulta de métricas (con agrupación opcional), un reductor para determinar cómo se agregan los valores (medio, máx, etc.) y parámetros opcionales de fecha y hora (por defecto 1 hora) para definir el intervalo de tiempo.
SELECT*FROMdd.metric_scalar('avg:system.cpu.user{*} by {service}','avg',TIMESTAMP'2025-07-10 00:00:00.000-04:00',TIMESTAMP'2025-07-17 00:00:00.000-04:00')ORDERBYvalueDESC;
Etiquetas
DDSQL expone etiquetas como un tipo hstore, inspirado en PostgreSQL. Puedes acceder a los valores de determinadas claves de etiqueta utilizando el operador de flecha de PostgreSQL. Por ejemplo:
SELECTinstance_type,count(instance_type)FROMaws.ec2_instanceWHEREtags->'region'='us-east-1'-- region is a tag, not a column
GROUPBYinstance_type
Las etiquetas son pares clave-valor en los que cada clave puede tener cero, uno o varios valores de etiqueta correspondientes. Cuando se accede al valor de la etiqueta, se devuelve una única cadena que contiene todos los valores correspondientes. Cuando los datos tienen varios valores de etiqueta para la misma clave de etiqueta, se representan como una cadena ordenada y separada por comas. Por ejemplo: