es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo resolver este problema de SQL de TDengine?

Estaba tratando de obtener un resultado deseado de mis datos utilizando TDengine, el SQL es:

select * from taos_dn_disk_total where ts >= NOW-1d and ts <= NOW interval(10m) fill(prev);

Y ocurre el siguiente resultado:

Error de DB: operación no válida: funciones no compatibles con intervalo (0.000562s)

La documentación oficial de TDengine indica que admiten tanto operaciones de intervalo como operaciones de llenado, ¿pero por qué el resultado muestra “no compatible”?

Tags:  

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en TDengine, me gustaría explicar que el mensaje de error “DB error: invalid operation: functions not compatible with interval (0.000562s)” ocurre debido a que la función “NOW” utilizada en la declaración SQL no puede ser utilizada con la función “interval”.

    Según la documentación oficial de TDengine, “NOW” no es una función sino una palabra clave que devuelve la marca de tiempo actual. Por lo tanto, no se puede utilizar en conjunto con la función “interval”, que requiere una duración de tiempo como parámetro. En lugar de usar “NOW”, puedes especificar un rango de tiempo específico utilizando el formato de marca de tiempo de TDengine, como “2022-01-01 00:00:00”, para lograr el resultado deseado.

    La declaración SQL correcta sería:

    select * from taos_dn_disk_total where ts >= '2022-01-01 00:00:00' and ts <= '2022-01-02 00:00:00' interval(10m) fill(prev);
    

    Al especificar un rango de tiempo específico, la función “interval” puede agrupar los datos en intervalos de 10 minutos, y la función “fill” puede manejar los valores de datos faltantes llenándolos con el valor anterior.

    En resumen, para evitar el mensaje de error “DB error: invalid operation: functions not compatible with interval”, asegúrate de utilizar el formato de marca de tiempo de TDengine en lugar de la función “NOW” al trabajar con la función “interval”.

Comments are closed.