Rank - función de gráfico
Rank() evalúa las filas del gráfico en la expresión y muestra, por cada fila, 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:
- 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 de una dimensión o si la expresión va precedida por el cualificador TOTAL, la función se evaluará en toda la columna. Si la tabla o el equivalente de tabla tiene múltiples dimensiones verticales, el segmento de columna actual incluirá solo 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 un mismo ranking, el texto y la representación numérica pueden controlarse mediante 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 el mode 4 y fmt 2 viene determinado por el orden de las dimensiones de gráfico.
Ejemplos y resultados:
Cree dos gráficos a partir de las dimensiones Product y Sales y otro gráfico desde Product y UnitSales. Agregue medidas tal como se muestra en la tabla siguiente.
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 está ordenada por Customer, la tabla lista todos los valores de Sales para Astrida, después Betacab, etc. Los resultados de Rank(Sales) mostrarán 10 para el valor Sales 12, 9 para el valor Sales 13, y así sucesivamente, con el valor de rango de 1 devuelto para el valor Sales 78. El segmento de columna siguiente comienza por Betacab, para lo cual el primer valor de Sales en el segmento es 12. El valor de rango de Rank(Sales) para esto viene dado como 11.
Si la tabla se ordena según las ventas Sales, los segmentos de columna consisten en los valores de Sales y el correspondiente cliente Customer. Como hay dos valores Sales de 12 (para Astrida y Betacab), el valor de Rank(Sales) para ese segmento de columna es de 1-2, por cada valor de Customer. Esto es porque hay dos valores de Customer para el valor 12 de Sales. Si hubiera habido 4 valores, el resultado sería 1-4 para todas las filas. Esto muestra el aspecto que tendrá el resultado para el valor por defecto (0) del argumento fmt.
Ejemplo 2:
Reemplace la dimensión Customer por Product y añada la medida Rank(Sales,1,2).
Esto devuelve el valor 1 en la primera fila de cada segmento de columna con las demás filas en blanco, ya que los argumentos mode y fmt están configurados con los valores 1 y 2 respectivamente.
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 '|');