Funciones de ventana - Amazon Timestream

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Funciones de ventana

Las funciones de ventana realizan cálculos en todas las filas del resultado de la consulta. Se ejecutan después de la cláusula HAVING pero antes de la cláusula ORDER BY. La invocación de una función de ventana requiere una sintaxis especial mediante la cláusula OVER para especificar la ventana. Una ventana tiene tres componentes:

  • La especificación de la partición, que separa las filas de entrada en diferentes particiones. Esto es análogo a la forma en que la cláusula GROUP BY separa las filas en diferentes grupos para las funciones de agregación.

  • La especificación de ordenación, que determina el orden en el que la función de ventana procesará las filas de entrada.

  • El marco de la ventana, que especifica una ventana deslizante de filas que la función procesará para una fila determinada. Si no se especifica el marco, el valor predeterminado es RANGE UNBOUNDED PRECEDIING, que es lo mismo que RANGE BETWEEN UNBOUNDED PRECEDING Y CURRENT ROW. Este marco contiene todas las filas desde el inicio de la partición hasta el último par de la fila actual.

Todas las funciones agregadas se pueden utilizar como funciones de ventana añadiendo la cláusula OVER. La función de agregado se calcula para cada fila sobre las filas del marco de ventana de la fila actual. Además de las funciones de agregado, Timestream for LiveAnalytics admite las siguientes funciones de clasificación y valor.

Función Tipo de datos de salida Descripción

cume_dist ()

bigint

Devuelve la distribución acumulada de un valor en un grupo de valores. El resultado es el número de filas que preceden o coinciden con la fila de la partición de la ventana dividido por el número total de filas de la partición de la ventana. Por lo tanto, cualquier valor de empate en el orden se evaluará con el mismo valor de distribución.

dense_rank ()

bigint

Devuelve el rango de un valor en un grupo de valores. Es similar a rank (), excepto que los valores de empate no producen huecos en la secuencia.

Entil (n)

bigint

Divide las filas de cada partición de ventana en n cubos que van desde 1 hasta n como máximo. Los valores de los cubos diferirán como máximo en 1. Si el número de filas de la partición no se divide uniformemente entre el número de cubos, los valores restantes se distribuyen uno por grupo, empezando por el primer grupo.

percent_rank ()

double

Devuelve la clasificación porcentual de un valor en un grupo de valores. El resultado es (r - 1)/(n - 1) donde r es el rango () de la fila y n es el número total de filas de la partición de la ventana.

rango ()

bigint

Devuelve el rango de un valor en un grupo de valores. El rango es uno más el número de filas que preceden a la fila y que no coinciden con la fila. Por lo tanto, los valores de empate en el orden producirán huecos en la secuencia. La clasificación se realiza para cada partición de ventana.

row_number ()

bigint

Devuelve un número secuencial único para cada fila, empezando por uno, según el orden de las filas dentro de la partición de la ventana.

primer_valor (x)

[igual que la entrada]

Devuelve el primer valor de la ventana. Esta función se limita al marco de la ventana. La función toma una expresión o un objetivo como parámetro.

last_value (x)

[igual que la entrada]

Devuelve el último valor de la ventana. Esta función se limita al marco de la ventana. La función toma una expresión o un objetivo como parámetro.

nth_value (x, offset)

[igual que la entrada]

Devuelve el valor con el desfase especificado desde el inicio de la ventana. Los desfases comienzan en 1. El desplazamiento puede ser cualquier expresión escalar. Si el desplazamiento es nulo o superior al número de valores de la ventana, se devuelve un valor nulo. Es un error que el desfase sea cero o negativo. La función toma una expresión o un objetivo como primer parámetro.

lead (x [, offset [, default_value]])

[igual que la entrada]

Devuelve el valor en las filas desplazadas después de la fila actual de la ventana. Los desfases comienzan en 0, que es la fila actual. El desplazamiento puede ser cualquier expresión escalar. El desfase por defecto es 1. Si el desplazamiento es nulo o mayor que la ventana, se devuelve el valor predeterminado o, si no se especifica, se devuelve nulo. La función toma una expresión o un objetivo como primer parámetro.

lag (x [, offset [, default_value]])

[igual que la entrada]

Devuelve el valor de las filas desplazadas antes de la fila actual de la ventana. Las compensaciones comienzan en 0, que es la fila actual. El desplazamiento puede ser cualquier expresión escalar. El desfase por defecto es 1. Si el desplazamiento es nulo o mayor que la ventana, se devuelve el valor predeterminado o, si no se especifica, se devuelve nulo. La función toma una expresión o un objetivo como primer parámetro.