gingerclaire
¡Hola a todos ustedes, gente útil!
Así que estoy tratando de recrear un Excel para alguien (¡tratando de convertir a todos a PBI!) Que muestra las siguientes columnas:
- Nombre del producto (fácil)
- últimos 12 meses consecutivos (lo logré)
- * 12 meses ANTES de los últimos 12 meses en marcha (¡aquí es donde me despego!)
- Últimos 3 meses consecutivos (está bien con eso)
- * El mismo período de 3 meses el año anterior (¡eeek ayuda!)
- Total del último mes (bien y elegante)
- * Total del mismo mes el año pasado (¡arghghghghghhg!)
Por favor, ¿podría ayudarme con los que tienen un *? Soy un novato relativo en esto, así que todavía estoy buscando a tientas en DAX. Esperaba que SAMEPERIODLASTYEAR pudiera ayudar, pero no pude hacer que eso funcionara en una tabla que no estaba basada en fechas.
Mis tablas se llaman:
- ‘Ventas’ con el campo relevante siendo [Value]
- ‘Tabla de fechas’ [Date] o ‘Ventas’ [relative continuous month]
Esperando que uno de ustedes me pueda ayudar 🙂
dedelman_clng
En respuesta a gingerclaire
Hola @gingerclaire –
Lo que tenemos que hacer es crear una instrucción FILTER flexible para obtener solo las fechas que queremos y luego aplicar ese filtro a la medida. Pruébelo con este código (modifíquelo según sea necesario)
MyMeasureFiltered =
VAR __StartOffset = 12 //How many months back from current month?
VAR __EndOffset = 0 //use 0 for current month, otherwise how many months back from current month
VAR __StartDt = //goes back to the end of the month X+1 months ago,
//then goes to the 1st of the following month
EOMONTH ( TODAY (), -1 * ( __StartOffset + 1 ) ) + 1
VAR __EndDt =
EOMONTH ( TODAY (), -1 * __EndOffset )
RETURN
CALCULATE (
[MyMeasure],
FILTER (
ALL ( DateTab ),
DateTab[Date] >= __StartDt
&& DateTab[Date] <= __EndDt
)
)
Lo que he mostrado es su filtro de 13 meses (este mes + 12 atrasado). Cambie las compensaciones para llegar a sus otros casos de uso. Lo que use para las compensaciones depende de su definición de «Hace X meses». ¿Hace 3 meses febrero o marzo?
Espero que esto ayude
David
dedelman_clng
En respuesta a gingerclaire
Tienes que cambiar los valores de __StartOffset y __EndOffset en el código. Todavía los tiene como 12 y 0. Por un valor de un mes, tienen que ser iguales. Deberá crear una medida diferente para cada escenario de __StartOffset y __EndOffset.
Además, dijiste que tenías una tabla de calendario / fecha. Está aplicando esto a su tabla de ventas que puede no funcionar como desea.
dedelman_clng
Hola @gingerclaire –
Dijiste algo sobre tener una tabla que no se basa en fechas, pero también dices que tienes una tabla de fechas. ¿La tabla de fechas es una tabla de calendario? Las funciones de DAX Time Intelligence como SAMEPERIODLASTYEAR requieren una tabla de fechas que contenga todas las fechas, no solo meses. Con ese tipo de tabla aún puedes unirte a Ventas que solo tiene una fecha por mes.
Consulte aquí para obtener más información sobre las tablas de calendario: CALENDARIO; CALENDARAUTO
Si no tiene la capacidad de crear tablas, le recomendamos que consulte «To * bleep * with Time Intelligence» de @Greg_Deckler
Finalmente, si puede crear / administrar tablas y aún tiene problemas, publique su código de medida y algunos datos de muestra, o un enlace a una copia de su archivo pbix que tiene datos confidenciales eliminados.
Espero que esto ayude
David
gingerclaire
En respuesta a dedelman_clng
Lo siento, tengo una tabla de citas. Quise decir que estoy tratando de crear este objeto visual como una matriz o tabla que tiene productos como la primera columna.
dedelman_clng
En respuesta a gingerclaire
Comprendido. Aún así, sugeriría mirar el blog de Greg Deckler, ya que eso puede inspirarte.
Aparte de eso, tendríamos que ver su código, datos y modelo para comenzar a ayudar más.
David
gingerclaire
En respuesta a dedelman_clng
Hola David, no tengo ningún código, ese es el problema. En este momento estoy usando estas medidas para trabajar los últimos 12, 3 y 1 meses y parecen estar funcionando:
Ventas en el último mes = CALCULAR ([Total sales], dateinperiod (Ventas[Relative continuous month], MAX (Ventas[Relative continuous month]),-1 MES))
Con los que tengo problemas son:
El mes pasado hace 12 meses (es decir, suma de 13 meses)
Últimos 3 meses hace 12 meses (es decir, suma de hace 4-6 meses)
Últimos 12 meses hace 12 meses (es decir, suma de hace 12-24 meses)
No puedo compartir los datos ya que son confidenciales, pero si me deja saber exactamente lo que necesita ver, ¿puedo hacer una captura de pantalla?
dedelman_clng
En respuesta a gingerclaire
Hola @gingerclaire –
Lo que tenemos que hacer es crear una instrucción FILTER flexible para obtener solo las fechas que queremos y luego aplicar ese filtro a la medida. Pruébelo con este código (modifíquelo según sea necesario)
MyMeasureFiltered =
VAR __StartOffset = 12 //How many months back from current month?
VAR __EndOffset = 0 //use 0 for current month, otherwise how many months back from current month
VAR __StartDt = //goes back to the end of the month X+1 months ago,
//then goes to the 1st of the following month
EOMONTH ( TODAY (), -1 * ( __StartOffset + 1 ) ) + 1
VAR __EndDt =
EOMONTH ( TODAY (), -1 * __EndOffset )
RETURN
CALCULATE (
[MyMeasure],
FILTER (
ALL ( DateTab ),
DateTab[Date] >= __StartDt
&& DateTab[Date] <= __EndDt
)
)
Lo que he mostrado es su filtro de 13 meses (este mes + 12 atrasado). Cambie las compensaciones para llegar a sus otros casos de uso. Lo que use para las compensaciones depende de su definición de «Hace X meses». ¿Hace 3 meses febrero o marzo?
Espero que esto ayude
David
gingerclaire
En respuesta a dedelman_clng
He intentado esto usando lo siguiente, pero parece que suma todas las ventas que se han realizado en los últimos 13 meses.
Estoy tratando de mostrar el total del mes -13 solamente (y luego también -13-15 y -13-24)
CM 12 meses más 1 mes =
VAR __StartOffset = 12
VAR __EndOffset = 0
VAR __StartDt =
EOMONTH (HOY (), -1 * (__StartOffset + 1)) + 1
VAR __EndDt =
EOMONTH (HOY (), -1 * __EndOffset)
REGRESO
CALCULAR (
[Total sales],
FILTRO (
TODOS (Ventas[Relative continuous month] ),
Ventas[Relative continuous month] > = __StartDt
&& Ventas[Relative continuous month] <= __EndDt
)
)
dedelman_clng
En respuesta a gingerclaire
Por solo un mes, configure StartOffset y EndOffset para que sean iguales.
Y [MyMeasure] debe ser lo que esté usando durante un mes. ¿Puede compartir el código de esa medida?
gingerclaire
En respuesta a dedelman_clng
Ventas de CM en el último mes = CALCULAR ([Total sales], dateinperiod (Ventas[Relative continuous month], MAX (Ventas[Relative continuous month]),-1 MES))
Si lo uso en el dax, devuelve lo mismo que mis ventas de un mes
dedelman_clng
En respuesta a gingerclaire
[Total Sales] estarán [MyMeasure]
gingerclaire
En respuesta a dedelman_clng
Muchas gracias por tu paciencia conmigo. Cuando utilizo las ventas totales como mi medida, parece mostrar el total de los últimos 13 meses juntos (en lugar de solo el total del mes 13).
dedelman_clng
En respuesta a gingerclaire
¿Estableció StartOffset y EndOffset para que sean iguales?
MyMeasureFiltered =
VAR __StartOffset = 3
VAR __EndOffset = 3
VAR __StartDt =
EOMONTH ( TODAY (), -1 * ( __StartOffset + 1 ) ) + 1
...
gingerclaire
En respuesta a dedelman_clng
Sí, utilicé este código:
CM 12 meses más 1 mes =
VAR __StartOffset = 12
VAR __EndOffset = 0
VAR __StartDt =
EOMONTH (HOY (), -1 * (__StartOffset + 1)) + 1
VAR __EndDt =
EOMONTH (HOY (), -1 * __EndOffset)
REGRESO
CALCULAR (
[Total sales],
FILTRO (
TODOS (Ventas[Relative continuous month] ),
Ventas[Relative continuous month] > = __StartDt
&& Ventas[Relative continuous month] <= __EndDt
)
)
dedelman_clng
En respuesta a gingerclaire
Tienes que cambiar los valores de __StartOffset y __EndOffset en el código. Todavía los tiene como 12 y 0. Por un valor de un mes, tienen que ser iguales. Deberá crear una medida diferente para cada escenario de __StartOffset y __EndOffset.
Además, dijiste que tenías una tabla de calendario / fecha. Está aplicando esto a su tabla de ventas que puede no funcionar como desea.
gingerclaire
En respuesta a dedelman_clng
¡Gracias! ¿Qué haría [MyMeasure] estar en este caso? ¿Mi medida de 1 mes? ¿O mi última medida de fecha?
jdeveaux
En respuesta a gingerclaire
Hola,
¿Tiene acceso fácil a la fecha (o mes) actual / seleccionada?
Si es así, puede usar un pequeño truco con el valor seleccionado y un Calcular (su Medida; TODAS (Fecha); Fecha seleccionada – 12 meses).
gingerclaire
En respuesta a jdeveaux
Perdón pero No entiendo lo que quiere decir con ‘¿Tiene acceso fácil a la fecha (o mes) actual / seleccionada?’ ¿Cómo puedo hacer esto / configurar esto?
jdeveaux
En respuesta a gingerclaire
¿Qué tipo de visual estás intentando configurar? ¿Hay algún eje de fechas?
gingerclaire
En respuesta a jdeveaux
Así que he creado una medida llamada CM Max Date para devolver mi fecha más reciente.
CM Max fecha = MAX (Ventas[Relative continuous month])
Entonces creé esto:
CM año el año pasado = Calcular ([CM Sales in last 12 months], TODOS (Ventas),[CM Max date],-12 meses)
Pero me sale el siguiente error
gingerclaire
En respuesta a jdeveaux
Es solo una tabla / matriz, por lo que no hay eje de fecha como tal.
gingerclaire
En respuesta a gingerclaire
Con tanto agradecimiento a dedelman_clng (¡¡mucha ayuda y paciencia de su parte !!).
He retrasado los datos de ventas (a menudo dos meses), así que creé una medida (CM el mes pasado) que devuelve el mes más reciente para el que tengo datos de ventas y modifiqué la fórmula para que solo funcionara a partir de esa fecha.
Aquí está la fórmula (el ejemplo dado es para este mes del año pasado):
CM 12 meses más 1 mes =
VAR __StartOffset = 12
VAR __EndOffset = 12
VAR __StartDt =
MESES ( [CM last month] (), -1 * (__StartOffset + 1)) + 1
VAR __EndDt =
MESES ( [CM last month] (), -1 * __EndOffset)
REGRESO
CALCULAR (
[Total sales],
FILTRO (
TODO (‘TABLA DE FECHA’),
‘TABLA DE FECHA'[Date] > = __StartDt
&& ‘TABLA DE FECHA'[Date] <= __EndDt
)
)
Las compensaciones fueron un poco confusas ya que comienzan desde 0, ¡así que hice una guía de idiotas para ayudarme! es decir, hubiera asumido que los últimos tres meses serían 1/3 pero en realidad es 0/2