RANK

Se aplica a:Columna calculadaTabla calculadaMedidaCálculo visual

Devuelve la clasificación del contexto actual dentro de la partición especificada ordenada según lo especificado. Si no se encuentra una coincidencia, la clasificación está en blanco.

Sintaxis

RANK ( [<ties>][, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )

Parámetros

Término Definición
ties (Opcional) Define cómo controlar la clasificación cuando se vinculan dos o más filas.
Si se especifica, el valor admitido es DENSE o SKIP.
Si se omite:
el valor predeterminado es SKIP.
relation (Opcional) Expresión de tabla desde la que se devuelve la fila de salida.
Si se especifica, todas las columnas de <orderBy> y <partitionBy> deben proceder de ella.
Si se omite:
- <orderBy> debe especificarse explícitamente.
- Todas las columnas de <orderBy> y <partitionBy> deben tener el nombre completo y proceder de una sola tabla.
- Toma el valor predeterminado ALLSELECTED() de todas las columnas de <orderBy> y <partitionBy>.
ejes (Opcional) Un eje en la forma visual. Solo está disponible en cálculos visuales y reemplaza la <relación>.
orderBy (Opcional) Cláusula ORDERBY() que contiene las columnas que definen cómo se ordena cada partición.
Si se omite:
- <relation> debe especificarse explícitamente.
- De forma predeterminada, ordena por cada columna de <relation> que aún no se haya especificado en <partitionBy>.
espacios en blanco (Opcional) Enumeración que define cómo controlar los valores en blanco en la ordenación.
Los valores admitidos son:
  • KEEP (el valor predeterminado), donde el comportamiento de los valores numéricos es que los valores en blanco se ordenan entre cero y valores negativos. El comportamiento de las cadenas es que los valores en blanco se ordenan delante de todas las cadenas, incluidas las cadenas vacías.
  • FIRST, los espacios en blanco siempre se ordenan al principio, independientemente del criterio de ordenación ascendente o descendente.
  • LAST, los espacios en blanco siempre se ordenan al final, independientemente del criterio de ordenación ascendente o descendente.

Tenga en cuenta que cuando se especifican parámetros <blanks> y espacios en blanco en la función ORDERBY() en una expresión individual, los <espacios en blanco> de la expresión orderBy individuales tienen prioridad para la expresión orderBy pertinente y las expresiones orderBy sin que se especifiquen <espacios en blanco> respetarán el parámetro <blanks en la función primaria Window.
partitionBy (Opcional) Cláusula PARTITIONBY() que contiene las columnas que definen cómo se particiona <relation>.
Si se omite, <relation> se trata como una sola partición.
matchBy (Opcional) Una cláusula MATCHBY() que contiene las columnas que definen cómo hacer coincidir los datos e identificar la fila actual.
reset (Opcional) Solo está disponible en cálculos visuales. Indique si el cálculo se restablece y en qué nivel de la jerarquía de columnas de la forma visual. Los valores aceptados son: NONE, LOWESTPARENT, HIGHESTPARENT o un entero. El comportamiento depende del signo entero:
: si se omite cero, el cálculo no se restablece. Equivalente a NONE.
: si es positivo, el entero identifica la columna a partir de la más alta, independiente del intervalo de agregación. HIGHESTPARENT es equivalente a 1.
: si es negativo, el entero identifica la columna a partir del más bajo, en relación con el intervalo de agregación actual. LOWESTPARENT es equivalente a -1.

Valor devuelto

Número de clasificación del contexto actual.

Observaciones

  • Cada columna de <orderBy>, <partitionBy> y <matchBy> debe tener un valor externo correspondiente para ayudar a definir la fila actual en la que operar, con el siguiente comportamiento:

    • Si hay exactamente una columna externa correspondiente, se utiliza su valor.
    • Si no hay ninguna columna externa correspondiente:
      • RANK determina primero todas las columnas de <orderBy>, <partitionBy> y <matchBy> que no tienen ninguna columna externa correspondiente.
      • Para cada combinación de valores de estas columnas existentes en el contexto primario de RANK, se evalúa RANK y se devuelve una fila.
      • La salida final de RANK es un número de clasificación.
  • Si <matchBy> está presente, RANK intentará usar columnas en <matchBy> y <partitionBy> para identificar la fila actual.

  • Si las columnas especificadas en <orderBy> y <partitionBy> no pueden identificar de forma única cada fila en <relation>, dos o más filas pueden tener la misma clasificación y el parámetro ties determinará la clasificación.

  • RANK devuelve un valor en blanco para el total de filas. Se recomienda probar exhaustivamente la expresión.

  • RANK no se compara con RANKX como SUM comparado con SUMX.

  • <reset> solo se puede usar en cálculos visuales y no se puede usar en combinación con <orderBy> o <partitionBy>. Si <reset> está presente, se puede especificar el <eje>, pero no se puede especificar la <relación>.

Ejemplo 1: columna calculada

La consulta DAX siguiente:

EVALUATE
ADDCOLUMNS(
    'DimGeography',
    "Rank",
    RANK(
    	DENSE,
    	'DimGeography',
    	ORDERBY(
    		'DimGeography'[StateProvinceName], desc,
    		'DimGeography'[City], asc),
        LAST,
    	PARTITIONBY(
    		'DimGeography'[EnglishCountryRegionName])))
ORDER BY [EnglishCountryRegionName] asc, [StateProvinceName] desc, [City] asc

Devuelve una tabla que clasifica cada geografía con el mismo englishCountryRegionName, por stateProvinceName y City. Los valores de columna <orderBy> en blanco se ordenan al final.

Ejemplo 2: cálculo visual

Las siguientes consultas DAX de cálculo visual:

SalesRankWithinYear = RANK(DENSE, ORDERBY([SalesAmount], DESC), PARTITIONBY([CalendarYear]))

SalesRankAllHistory = RANK(DENSE, ORDERBY([SalesAmount], DESC))

Cree dos columnas que clasifiquen cada mes por el total de ventas, tanto dentro de cada año como por todo el historial.

En la siguiente captura de pantalla se muestra la matriz visual y la primera expresión de cálculo visual:

Cálculo del objeto visual DAX

INDEX
ORDERBY
PARTITIONBY
WINDOW
ROWNUMBER