Top
Top() evalúa una expresión situada en la primera fila (superior) de un segmento de columna en una tabla. La fila para la que se calcula depende del valor de offset. Si está presente, se tomará de forma predeterminada la fila superior. Para los gráficos que no sean tablas, la evaluación de Top() se efectúa en la primera fila de la columna actual en el equivalente de tabla simple del gráfico.
Sintaxis:
Top([TOTAL] expr [ , offset [,count ]])
Tipo de datos que devuelve: dual
Argumentos:
- expr: La expresión o el campo que contiene los datos que se han de medir.
- offset: Especificar un offset n mayor que 0 mueve la evaluación de la expresión n filas más arriba de la fila actual. Especificar un offset de 0 evaluará la expresión en la fila actual. Especificar un número de offset (desplazamiento) negativo hará que la función Above sea equivalente a una función Below con el correspondiente número de offset positivo.
- count: Especificando un tercer argumento count mayor que 1, la función devolverá un rango de valores count, uno por cada cuenta count de filas de tabla a contar hacia arriba desde la celda original. De esta manera, la función puede utilizarse como argumento en cualquiera de las funciones de rango especiales. Funciones de rango
- TOTAL: Si la tabla es unidimensional o si se utiliza el cualificador TOTAL como argumento, el segmento de columna actual es siempre igual a la columna entera.
Limitaciones:
-
No se permite ordenar por valores Y en gráficos ni ordenar por columnas de expresión en tablas cuando esta función de gráfico se usa en cualquiera de las expresiones del gráfico. Estas alternativas de ordenación están por lo tanto automáticamente deshabilitadas. Cuando utiliza esta función de gráfico en una visualización o tabla, el orden de la visualización volverá a la entrada ordenada de esta función.
-
Las llamadas recursivas devolverán NULL.
Ejemplos y resultados:
Ejemplo 1:
Customer | Sum(Sales) | Top(Sum(Sales)) | Sum(Sales) + Top(Sum(Sales)) | Top offset 3 |
---|---|---|---|---|
2566 | 587 | 3153 | 3249 | |
Astrida | 587 | 587 | 1174 | 1270 |
Betacab | 539 | 587 | 1126 | 1222 |
Canutility | 683 | 587 | 1270 | 1366 |
Divadip | 757 | 587 | 1344 | 1440 |
En la representación del gráfico de tabla mostrado en este ejemplo, la tabla se crea a partir de la dimensión Customer y las medidas: Sum(Sales) y Top(Sum(Sales)).
La columna Top(Sum(Sales)) devuelve 587 para todas las filas porque éste es el valor de la fila superior: Astrida.
La tabla también muestra medidas más complejas: una creada a partir de Sum(Sales)+Top(Sum(Sales)) y otra etiquetada Top offset 3, que se crea utilizando la expresión Sum(Sales)+Top(Sum(Sales), 3) y tiene el argumento offset establecido en 3. Agrega el valor Sum(Sales) para la fila actual al valor de la tercera fila desde la fila superior, es decir, la fila actual más el valor de Canutility.
Ejemplo 2:
En las representaciones de gráficos de tabla mostrados en este ejemplo, se han añadido más dimensiones a los gráficos: Month y Product. Para gráficos con más de una dimensión, los resultados de las expresiones que contienen las funciones Above, Below, Top y Bottom dependen del orden en que QlikView clasifica las dimensiones de columna. QlikView evalúa las funciones basándose en los segmentos de columna que resultan de la dimensión que se ordena en último lugar. El criterio de ordenación de columnas se controla en el panel de propiedades, en Ordenación y no es necesariamente el orden en el que las columnas aparecen en una tabla. (Algunas filas no se muestran, para ahorrar espacio.)
Customer | Product | Month | Sum(Sales) | First value |
---|---|---|---|---|
2566 | - | |||
Astrida | AA | Jan | 46 | 46 |
Astrida | AA | Feb | 60 | 46 |
Astrida | AA | Mar | 70 | 46 |
... | ... | ... | ... | ... |
Astrida | AA | Sep | 78 | 46 |
Astrida | AA | Oct | 12 | 46 |
Astrida | AA | Nov | 78 | 46 |
Astrida | AA | Dec | 22 | 46 |
Astrida | BB | Jan | 46 | 46 |
Customer | Product | Month | Sum(Sales) | First value |
---|---|---|---|---|
2566 | - | |||
Astrida | AA | Jan | 46 | 46 |
Astrida | BB | Jan | 46 | 46 |
Astrida | AA | Feb | 60 | 60 |
Astrida | BB | Feb | 60 | 60 |
Astrida | AA | Mar | 70 | 70 |
Astrida | BB | Mar | 70 | 70 |
Astrida | AA | Apr | 13 | 13 |
Astrida | BB | Apr | 13 | 13 |
Le remitimos al Ejemplo 2 de la función Above para más detalles.
Ejemplo 3:
La función Top puede utilizarse como entrada para las funciones de rango. Por ejemplo: RangeAvg (Top(Sum(Sales),1,3)).
En los argumentos de la función Top(), offset está configurado en 1 y count en 3. La función halla los resultados de la expresión Sum(Sales) en las tres filas que comienzan con la fila de debajo de la fila inferior en el segmento de columna (porque offset=1), y las dos filas por debajo de esa (donde haya una fila). Estos tres valores se utilizan como entrada para la función RangeAvg(), que buscará la media de los valores en el rango de números proporcionado.
Una tabla con el valor Customer como dimensión ofrecerá los resultados siguientes para la expresión RangeAvg().
Customer | RangeAvg (Top(Sum(Sales),1,3)) |
---|---|
Astrida | 603 |
Betacab | 603 |
Canutility | 603 |
Divadip | 603 |
Datos utilizados en los ejemplos:
Monthnames:
LOAD * INLINE [
Month, Monthnumber
Jan, 1
Feb, 2
Mar, 3
Apr, 4
May, 5
Jun, 6
Jul, 7
Aug, 8
Sep, 9
Oct, 10
Nov, 11
Dec, 12
];
Sales2013:
crosstable (Month, Sales) LOAD * inline [
Customer|Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec
Astrida|46|60|70|13|78|20|45|65|78|12|78|22
Betacab|65|56|22|79|12|56|45|24|32|78|55|15
Canutility|77|68|34|91|24|68|57|36|44|90|67|27
Divadip|57|36|44|90|67|27|57|68|47|90|80|94
] (delimiter is '|');
Para ordenar los meses correctamente cuando cree sus gráficos, diríjase a la página Sort del panel de propiedades, y seleccione la casilla Expression en Sort by. En el cuadro de expresión, escriba Monthnumber.