Cálculo de la ciudad con mayores ventas

Ya sabemos que la función TOPN va a devolver las n filas “superiores” de una tabla, por lo que podríamos obtener fácilmente la fila de la tabla Geography correspondiente a la ciudad con mayores ventas. Aunque el objetivo es crear una medida -por motivos estrictamente pedagógicos- vamos a crear la tabla intermedia como tabla calculada para que podamos ver el resultado parcial:

Max Sales City = 
TOPN(
    1,
    Geography,
    [Sales]
)

En este caso, cada fila de Geography representa una ciudad, por lo que hemos podido iterar directamente dicha tabla sin extraer los valores distintos de la columna que nos interesase con VALUES o con DISTINCT. El resultado de la tabla calculada es el siguiente:

Max Sales City

Ya sabemos que la ciudad es Lyon. Ahora ¿cómo extraemos el nombre de la ciudad (y solo el nombre)? Una posible forma es trabajando en contexto de fila pues, en dicho contexto, podemos acceder directamente a los valores de los campos. Es decir, en nuestra medida tendremos que usar alguna función que recorra esta tabla fila por fila (y solo hay una fila) y nos extraiga el campo que nos interesa. ¿Y qué función podemos usar? Pues, teniendo en cuenta que solo hay una fila, servirían varias funciones. Por ejemplo, MAXX y MINX (el valor máximo de la columna City es “Lyon”, al igual que el valor mínimo de dicha columna, que también es “Lyon”). Es decir, nuestra medida (a la que podemos llamar igual que la tabla calculada que hemos creado, “Max Sales City”) tendría el siguiente aspecto:

Max Sales City = 
VAR __citySales =
    TOPN(
        1,
        Geography,
        [Sales]
    )
RETURN
    MAXX(
        __citySales,
        [City]
    )

Lo primero que hemos hecho ha sido crear una variable (__citySales) conteniendo una tabla con la ciudad de mayores ventas. A continuación, la recorremos y extraemos el valor máximo (y único) de la columna City. Nuestra medida llevada a una tarjeta devuelve el siguiente resultado:

Max Sales City
Es importante insistir una vez más en que no debemos crear tablas en nuestro modelo de datos como paso intermedio para obtener una métrica (salvo que esté justificado por algún motivo como el rendimiento). Nosotros hemos generado una tabla calculada con la ciudad de mayores ventas solo por motivos pedagógicos para ver el resultado intermedio.