Antes de hacer el ejercicio podemos resolverlo “visualmente” para estar seguros de cuál es el resultado que debemos obtener. Para ello creamos un objeto visual de tipo “tabla” en nuestro informe y llevamos a ella el campo Calendar[year_month] y la medida [Sales]. Ordenamos la tabla según las ventas y vemos el resultado:
El mes con mayores ventas fue julio de 2019.
Ahora obtengamos la medida que se nos pide: tenemos que calcular las ventas por mes y quedarnos con el mes de mayores ventas. Eso podemos conseguirlo con la función TOPN iterando los valores distintos del campo Calendar[year_month]. Tenemos que iterar los valores distintos pues recordemos que en la tabla Calendar cada fila (cada día) contiene un valor para el campo year_month, valor que va a ser el mismo para todos los días de cada mes. Si iterásemos directamente la tabla Calendar estaríamos obteniendo las ventas diarias.
Es decir:
TOPN(
1,
VALUES('Calendar'[year_month]),
[Sales]
)
Ya sabemos que en la función TOPN estamos trabajando en contexto de fila, así que resulta necesario usar la función CALCULATE o realizar una referencia a una medida -como en nuestro caso- para forzar la transición de contexto.
Por último, para obtener el mes en cuestión, basta con recorrer la tabla obtenida con una función iterativa como MAXX:
VAR __monthlySales =
TOPN(
1,
VALUES('Calendar'[year_month]),
[Sales]
)
RETURN
MAXX(
__monthlySales,
[year_month]
)
El resultado, si llevamos la medida a una tarjeta, es el siguiente:
Podríamos preferir que el resultado tuviese un aspecto más “amigable” (tipo “Julio de 2019”). Debemos tener en cuenta que, con una medida, el resultado debe ser un valor escalar (un número, un texto, etc.), de forma que lo único que podríamos hacer aquí sería generar un texto a partir del resultado que hemos obtenido, separando la fecha, el mes, etc. Una forma sencilla de conseguir esto podría ser la siguiente:
VAR __monthlySales =
TOPN(
1,
VALUES('Calendar'[year_month]),
[Sales]
)
VAR __yearMonth =
MAXX(
__monthlySales,
[year_month]
)
RETURN
RIGHT(__yearMonth, 2) & "/" & LEFT(__yearMonth, 4)
En esta modificación de la medida se ha llevado a la variable __yearMonth el resultado que habíamos conseguido y se devuelven los dos caracteres de la derecha (el mes) junto a un carácter “/” y los cuatro caracteres de la izquierda (el año):