09 · Ordenar y Top-N
Escenario
Mostrar las 10 renovaciones más altas por importe, en orden descendente. O un orden multiclave: por región (alfabético) y luego por importe (descendente).
@sort
{{ @sort [Renovacion] desc }}
{{ [Cliente] }} | {{ [Renovacion] }}
La dirección es asc (por defecto) o desc. @sort es estable — las filas con claves iguales conservan su orden original (primero en aparecer).
Orden multiclave
{{ @sort [Region] asc }}
{{ @sort [Renovacion] desc }}
{{ [Cliente] }} | {{ [Region] }} | {{ [Renovacion] }}
El primer @sort es la clave primaria; los @sort posteriores son criterios de desempate (convención Excel/SQL). Arriba: las filas se agrupan por Región alfabéticamente; dentro de cada Región, se ordenan por Renovación descendente.
@top
{{ @sort [Renovacion] desc }}
{{ @top 10 }}
{{ [Cliente] }} | {{ [Renovacion] }}
@top N conserva las primeras N filas después de todos los filtros y ordenamientos. Pon @top DESPUÉS de @sort — primero ordenas, luego tomas las primeras.
Si N supera el número de filas disponibles, @top no hace nada (devuelve todas las filas). Un N negativo o cero produce un bloque vacío.
Combinar con @filter
{{ @filter [Renovacion] > 1000 }}
{{ @sort [Renovacion] desc }}
{{ @top 5 }}
{{ [Cliente] }} | {{ [Renovacion] }}
Orden: filtro → orden → top. Varios @filter se combinan con AND (cercano a ADR-0029; véase la Receta 05 para filtros por lista).
Semántica de comparación
@sort usa la comparación estándar de XTL:
- Números o cadenas numéricas: numérica.
- Booleanos:
false < true. - Fechas: marca de tiempo.
- En el resto: forma canónica de cadena en orden por punto de código Unicode. Sin ordenación por configuración regional. "Z" < "a" (mayúsculas < minúsculas en ASCII).
Si tus operadores quieren ordenación sensible al idioma, preordena en el origen o añade una columna con clave de ordenación.
Notas
- "Orden estable" significa que las claves iguales conservan el orden de inserción — crítico cuando se encadenan varios
@sortcomo criterios de desempate. @toptras@sortes el patrón canónico de "top N".@topsolo (sin@sort) devuelve las primeras N filas en el orden del origen.- Referencia de especificación:
spec/language.md"Sort" y "Top"; ADR-0016.