TOPN

La función TOPN devuelve las N filas con valores más elevados de la tabla indicada.

Sintaxis

TOPN(
    n_value,
    table,
    orderBy_expression
    [, order
    [, orderBy_expression
    [, order]]...]
)

Parámetros
  • n_value: Número de filas a devolver como resultado.
  • table: Tabla conteniendo las filas para las que se evaluará la expresión.
  • orderBy_expression: Expresión a evaluar para cada fila de la tabla y cuyo resultado se usará para ordenar la tabla.
  • order: Argumento opcional. Valor que especifica cómo aplicar un rango a un valor (ordenando la lista de abajo arriba o de arriba abajo).
Valor devuelto

La función TOPN devuelve una tabla con las N filas con mayores valores.

Información adicional

Si el argumento n_value es cero o un número negativo, la función devuelve una tabla vacía. Nótese que las filas no se incluyen en la tabla devuelta en ningún orden específico.

Si se da el caso de que varias filas tengan el mismo valor, la función las devuelve todas, pudiendo, en este caso particular, devolver más de las N filas solicitadas.

Si order toma el valor 0 o FALSE (o si se omite), la ordenación se realiza en orden descendente. Por el contrario, si order toma el valor 1 o TRUE, la ordenación se aplica en orden ascendente.

Como esta función devuelve una tabla, normalmente será necesario aplicar al resultado de esta función otra función de agregación (SUMX, AVERAGEX...) para obtener un escalar, o utilizar el resultado en funciones que exijan una tabla como argumento.

En el caso de que se incluya más de un argumento orderBy_expression, éstos se aplicarán sucesivamente para ordenar la tabla en el caso de que haya igualdades en los valores (véase un ejemplo más adelante).

Ejemplos

Si tenemos una tabla de ventas que incluye el nombre del producto vendido y la cantidad vendida:

Función TOPN. Ejemplo de uso

...podemos definir una medida que sume, por ejemplo, las ventas de los 3 productos más vendidos. Comencemos añadiendo una medida que suma las ventas totales (en el contexto actual):

Ventas totales = SUM(Ventas[Ventas])

Ahora podemos usar la función CALCULATE para filtrar la medida anterior de forma que solo se consideren los 3 productos más vendidos:

Ventas TOP 3 productos = 
CALCULATE(
   [Ventas totales],
    TOPN(
        3,
        VALUES(Ventas[Producto]),
        [Ventas totales]
    )
)

Como puede apreciarse estamos recalculando la medida [Ventas totales] con un filtro: una tabla que devuelve los 3 valores superiores del listado de todos los productos para la medida [Ventas totales].

Nótese cómo la función VALUES resulta necesaria para convertir una columna en una tabla (requisito en TOPN).

Si llevamos esta medida a una visualización tipo tarjeta obtenemos:

Función TOPN. Ejemplo de uso

...valor resultado de sumar los valores 9, 4 y 3 correspondientes a los productos C, B y A, respectivamente.

Supongamos ahora que nuestros datos de origen con información sobre las ventas incluyen el producto vendido, el precio de venta y el coste de fabricación y comercialización del mismo:

Función TOPN. Ejemplo de uso

Creamos sendas medidas para calcular los ingresos y los costes totales (en el contexto actual):

Ingresos totales = SUM(Ventas[Ingreso])

Costes totales = SUM(Ventas[Coste])

Podemos llevar a una visualización tipo tabla el listado de productos con sus ingresos y costes totales:

Función TOPN. Ejemplo de uso

Puede verse cómo hay dos productos cuyos ingresos totales coinciden en la primera posición del ranking de ventas. De esta forma, si creásemos una medida para devolver los costes totales de los 3 productos con mayores ingresos:

Costes TOP 3 productos = 
CALCULATE(
    [Costes totales],
    TOPN(
        3,
        VALUES(Ventas[Producto]),
        [Ingresos totales],
        FALSE
    )
)

El resultado, llevado a una visualización tipo tarjeta, sería el siguiente:

Función TOPN. Ejemplo de uso

...resultado de sumar los costes de los productos A, B y C (productos con mayores ingresos).

Sin embargo, si en lugar de querer considerar los 3 productos con mayores ingresos, quisiéramos considerar solo un producto (es decir, si estuviésemos interesados en conocer los costes totales derivados de vender el producto con mayores ingresos):

Costes TOP 1 producto = 
CALCULATE(
    [Costes totales],
    TOPN(
        1,
        VALUES(Ventas[Producto]),
        [Ingresos totales],
        FALSE
    )
)

...podríamos confirmar cómo el resultado de la medida ¡es 11!:

Función TOPN. Ejemplo de uso

Esto ocurre porque la función TOPN, en este caso, devuelve una tabla con dos filas, una para cada uno de los productos que ocupan la primera posición en el ranking de ingresos.

Imaginemos ahora que se decide que la medida [Costes TOP 1 producto] considere siempre el coste más alto (en el caso de que haya igualdad en los ingresos). Podemos añadir esta circunstancia agregando un nuevo argumento orderBy_expression:

Costes TOP 1 producto = 
CALCULATE(
    [Costes totales],
    TOPN(
        1,
        VALUES(Ventas[Producto]),
        [Ingresos totales],
        FALSE,
        [Costes totales],
        FALSE
    )
)

Ahora estamos indicando a la función TOPN que extraiga el producto con mayores ingresos totales y que, en caso de igualdad, considere los costes totales también en sentido decreciente (de ahí el argumento FALSE tras [Costes totales]). Nuestra visualización ahora muestra lo siguiente:

Función TOPN. Ejemplo de uso

Categoría
Estadísticas
Enviado por admin el Lun, 03/12/2018 - 20:14