Todos los productos
Search
Centro de documentos

OpenSearch:Introducción a las TVF

Última actualización: Sep 04, 2026

Las funciones con valores de tabla (TVF) definidas por el usuario permiten agrupar, ordenar y filtrar los resultados de una consulta dentro de instrucciones SQL.

rankTvf

La función rankTvf funciona de manera similar a la función de ventana rank de SQL para filtrar datos después de la agrupación. De forma predeterminada, se ejecuta en cada nodo de datos. Sintaxis:

rankTvf("group_key", "sort_key", "reserved_count", (sql))

group_key: Campos utilizados para agrupar. Especifique varios campos separados por comas (,). Este parámetro es opcional.

sort_key: Campos utilizados para ordenar. Especifique varios campos. Use un signo más (+) para orden ascendente y un signo menos (-) para orden descendente. El orden ascendente es el valor predeterminado. Este parámetro es obligatorio.

reserved_count: Número de registros que se conservarán en cada grupo. Utilice un valor negativo para conservar todos los registros.

SQL: Instrucción SQL que se va a ejecutar.

rankTvf procesa y filtra los resultados de la consulta SQL; conserva el orden original de las filas y elimina aquellas que no cumplen con los criterios del filtro.

Ejemplo:

select * from table (
  rankTvf('brand','-size','1', (SELECT brand, size FROM phone))
) 
order by brand 
limit 100 

sortTvf

La función sortTvf proporciona una ordenación TopK local. Puede ordenar y obtener los resultados TopK en un nodo searcher antes de realizar una unión. Si utiliza una cláusula ORDER BY, la ordenación se envía al nodo QRS para efectuar una ordenación global. Sintaxis:

sortTvf("sort_key", "reserved_count", (sql))

sort_key: Campos utilizados para ordenar. Especifique varios campos. Use un signo más (+) para orden ascendente y un signo menos (-) para orden descendente. El orden ascendente es el valor predeterminado. Este parámetro es obligatorio.

reserved_count: Número de registros que se conservarán en cada grupo.

sql: Instrucción SQL que se va a ordenar.

Diferencia entre sortTvf y rankTvf: A diferencia de rankTvf, la función sortTvf modifica el orden de las filas de la instrucción SQL original.

Ejemplo:

select * from table (
  sortTvf('-size','3', (SELECT brand, size FROM phone))
)

topKTvf

La función topKTvf también ofrece una ordenación TopK local en un nodo searcher antes de una unión. Si utiliza una cláusula ORDER BY, la ordenación se envía al nodo QRS para realizar una ordenación global. Sintaxis:

topKTvf("sort_key", "reserved_count", (sql))

sort_key: Campos utilizados para ordenar. Especifique varios campos. Use un signo más (+) para orden ascendente y un signo menos (-) para orden descendente. El orden ascendente es el valor predeterminado. Este parámetro es obligatorio.

reserved_count: Número de registros que se conservarán en cada grupo.

sql: Instrucción SQL que se va a ordenar.

Diferencia entre topKTvf y sortTvf: A diferencia de sortTvf, el conjunto de resultados final de topKTvf no está ordenado.

Ejemplo:

select * from table (
  topKTvf('-size','3', (SELECT brand, size FROM phone))
)

enableShuffleTvf

La función enableShuffleTvf fuerza la ejecución de la TVF externa en el nodo QRS. Por ejemplo, rankTvf se delega a un nodo searcher de forma predeterminada, pero si se envuelve la instrucción SQL interna con enableShuffleTvf, rankTvf se ejecutará exclusivamente en el nodo QRS. Sintaxis:

enableShuffleTvf((sql))

Ejemplo:

select * from table (
 enableShuffleTvf((SELECT brand, size FROM phone))
)