Rank - función de gráfico
Rank() evalúa las filas del gráfico en la expresión, y para cada fila muestra la posición relativa del valor de la dimensión evaluada en la expresión. Esta función, cuando evalúa la expresión, compara el resultado con el resultado de las otras filas que contienen el segmento de columna actual y devuelve la clasificación de la fila actual dentro del segmento.
Para gráficos que no sean tablas, se define el segmento de columna actual tal como aparece en su equivalente en la tabla simple.
Sintaxis:
Rank([TOTAL] expr[, mode[, fmt]])
Tipo de datos que devuelve: dual
Argumentos:
Argumento | Descripción |
---|---|
expr | La expresión o el campo que contiene los datos que se han de medir. |
mode | Especifica la representación numérica del resultado de la función. |
fmt | Especifica la representación de texto del resultado de la función. |
TOTAL |
Si el gráfico es unidimensional o si la expresión va precedida por el calificador TOTAL, la función se evalúa a lo largo de toda la columna. Si la tabla o el equivalente de tabla tiene múltiples dimensiones verticales, el segmento de columna actual incluirá sólo filas con los mismos valores que la fila actual en todas las columnas de dimensión, excepto para la columna que muestra la última dimensión en el orden de campos interno. |
El ranking se devuelve como un valor dual, el cual, en el caso de que cada fila tenga una clasificación única será un entero entre 1 y el número de filas del segmento de columna actual.
En caso de que varias filas compartan el mismo ranking, el texto y la representación numérica se pueden controlar con los parámetros mode y fmt.
mode
El segundo argumento, mode, puede tomar los siguientes valores:
Valor | Descripción |
---|---|
0 (por defecto) |
Si todos los rangos dentro del grupo compartido caen dentro del extremo más bajo del valor de en medio del ranking entero, todas las filas reciben el rango menor dentro del grupo compartido. Si todos los rangos dentro del grupo compartido caen dentro del extremo más alto del valor de en medio del ranking entero, todas las filas reciben el rango menor dentro del grupo compartido. Si todos los rangos dentro del grupo compartido se salen del valor central del ranking completo, todas las filas reciben el valor correspondiente a la media del ranking superior e inferior en el segmento de columna completo. |
1 | Rango más bajo en todas las filas. |
2 | Rango promedio en todas las filas. |
3 | Rango más alto en todas las filas. |
4 | Rango más bajo en la primera fila, incrementado por uno para cada fila. |
fmt
El tercer argumento, fmt, puede tomar los siguientes valores:
Valor | Descripción |
---|---|
0 (por defecto) | Valor bajo - valor alto en todas las filas (por ejemplo 3 - 4). |
1 | Valor bajo en todas las filas. |
2 | Valor más bajo en la primera fila, espacio en blanco en las siguientes filas. |
El orden de las filas para mode 4 y fmt 2 viene determinado por el orden de clasificación de las dimensiones del gráfico.
Ejemplos y resultados:
Cree dos visualizaciones a partir de las dimensiones Product y Sales y otra a partir de Product y UnitSales. Agregue medidas tal como se muestra en la tabla siguiente.
Ejemplos | Resultados |
---|---|
Ejemplo 1. Cree una tabla con las dimensiones Customer y Sales y la medida Rank(Sales) |
El resultado depende del orden de las dimensiones. Si la tabla se ordena por Customer, la tabla muestra todos los valores de Sales para Astrida, luego Betacab, y así sucesivamente. Los resultados de Rank(Sales) mostrarán 10 para el valor Sales 12, 9 para el valor Sales 13, etc., con el valor de rango de 1 devuelto para el valor Sales 78. El siguiente segmento de columna comienza con Betacab, para el que el primer valor de Sales en el segmento es 12. El valor de rango de Rank(Sales) para esto se proporciona como 11. Si la tabla se ordena por Sales, los segmentos de columna consistirán en los valores de Sales y el correspondiente Customer. Debido a que hay dos valores Sales de 12 (para Astrida y Betacab), el valor de Rank(Sales) para ese segmento de columna es 1-2, por cada valor de Customer. Esto se debe a que hay dos valores de Customer para el valor Sales 12. Si hubiera habido 4 valores, el resultado sería 1-4 para todas las filas. Esto muestra cómo se ve el resultado para el valor predeterminado (0) del argumento fmt. |
Ejemplo 2. Reemplace la dimensión Cliente por Producto y agregue la medida Rank(Sales,1,2) | Esto devuelve 1 en la primera fila en cada segmento de columna y deja en blanco todas las demás filas, porque los argumentos mode y fmt se fijan en 1 y 2 respectivamente. |
Resultados para el ejemplo 1, con tabla ordenada por Customer:
Customer | Sales | Rank(Sales) |
---|---|---|
Astrida | 12 | 10 |
Astrida | 13 | 9 |
Astrida | 20 | 8 |
Astrida | 22 | 7 |
Astrida | 45 | 6 |
Astrida | 46 | 5 |
Astrida | 60 | 4 |
Astrida | 65 | 3 |
Astrida | 70 | 2 |
Astrida | 78 | 1 |
Betcab | 12 | 11 |
Resultados para el ejemplo 1, con tabla ordenada por Sales:
Customer | Sales | Rank(Sales) |
---|---|---|
Astrida | 12 | 1-2 |
Betacab | 12 | 1-2 |
Astrida | 13 | 1 |
Betacab | 15 | 1 |
Astrida | 20 | 1 |
Astrida | 22 | 1-2 |
Betacab | 22 | 1-2 |
Betacab | 24 | 1-2 |
Canutility | 24 | 1-2 |
Datos utilizados en los ejemplos:
ProductData:
Load * inline [
Customer|Product|UnitSales|UnitPrice
Astrida|AA|4|16
Astrida|AA|10|15
Astrida|BB|9|9
Betacab|BB|5|10
Betacab|CC|2|20
Betacab|DD|0|25
Canutility|AA|8|15
Canutility|CC|0|19
] (delimiter is '|');
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 '|');