Problema de filtro en una función de cálculo – power bi desktop

Un usuario Pregunto ✅

jessicaf31

Hola !

No entiendo por qué mi medida en Power Bi for Desktop no funciona: es una función de cálculo con una función de filtro (como vi aquí: https://msdn.microsoft.com/fr-fr/library/dn727121 .aspx)

Como puede ver a continuación, me gustaría ver la suma del monto solo si el día corresponde al último día en mi base de datos (aquí el último día es el miércoles, entonces el día 3, y en la primera tabla podemos ver que el monto para el día 3 es 886K y no 6,76M que corresponde al total de todas las cantidades!) ¿Qué hay de malo en mi fórmula?

sumjoursemaine = CALCULATE (SUM (Transacciones[amount]); FILTRO (TODAS (Transacciones); Transacciones[joursemaine]=[jourdernierjour]))

Gracias !!

calcular pb.PNG

En respuesta a jessicaf31

@ jessicaf31 – Creo que su problema es el contexto con su medida jourdernierjour y / o DernierJour. En el contexto de su informe, muestra 3, pero en el contexto de la fila cuando se calcula su medida sumjoursemaine, DernierJour siempre es igual al MAX de esa fila y, por lo tanto, journaldernierjour siempre es igual a la columna joursemaine.

Intente cambiar su medida DernierJour a esto:

DernierJour = MAXX(ALL(Transactions),Transactions[Date])

Lo que esto hace es forzar a DernierJour a evaluar siempre en el contexto de todas las filas, lo que significa que DerierJour siempre será la fecha MAX dentro de la tabla, lo que significa que jourdernierjour siempre será el valor del día de la semana de la fecha MAX en el tabla, lo que * debería * significar que obtiene la respuesta correcta en su informe.

Creo que le falta un «MAX» en su FILTRO. Hice esta medida:

Last Value = CALCULATE(SUM([Value]),FILTER(ALL(dates),[date]=MAX([Date])))

Mi tabla tenía una columna de fecha y una columna de valor, esto devolvió el valor de la última fecha en la tabla.

No estoy seguro de cómo el día 3 (miércoles) es la última fecha en su tabla, pero supongo que así es como funciona su modelo de datos.

jessicaf31

En respuesta a Greg_Deckler

Hola !

Gracias por tu respuesta pero también tengo esta medida, que funciona.

Pero el otro es diferente: no es el máximo de una fecha lo que quiero filtrar, sino solo los días que son iguales a mi último día.

Mi máximo (fecha) = miércoles 24 de febrero, por lo que es el día 3, entonces quiero la suma (valor) de todos los días 3, y tengo este total en mi tabla a la izquierda (886K).

Esta fórmula me muestra los buenos resultados:

sumjoursemaine = CALCULATE (SUM (Transacciones[amount]); FILTRO (TODAS (Transacciones); Transacciones[joursemaine]= 3))

Pero quiero que el último parámetro: 3, sea una variable («jourdernierjour»):

calcular pb2.PNG

Cuando es una variable no funciona:

calcular pb.PNG

Gracias de nuevo !

Jessica

En respuesta a jessicaf31

@ jessicaf31 – Entonces, no estoy muy familiarizado con su modelo de datos, pero aquí, si puede replicar esto, debería llevarlo allí.

Sum of Last Value = 
VAR LastDayofWeek = AVERAGEX(FILTER(ALL(dates),[date]=MAX([Date])),[DayofWeek])
RETURN (
CALCULATE(SUM([Value]),FILTER(ALL(dates),[DayofWeek]=LastDayofWeek)))

Entonces, primero, averigüe el MÁXIMO de la fecha y en qué se traduce el Día de la Semana. Suponiendo que todos los miércoles son «3», tomar el promedio arrojará 3 sin importar cuántos 3 haya. Mi tabla tiene una columna Fecha y una columna Día de la semana calculada a partir de la fecha usando WEEKDAY ().

Utilice ese valor para filtrar las filas de la tabla y sumar la columna correspondiente ([Value])

jessicaf31

En respuesta a Greg_Deckler

@Greg_Deckler Gracias de nuevo por tomarse el tiempo para responder y ayudarme.

Yo he hecho lo mismo pero todavía no funciona.

Describiré todos los pasos que he realizado y tal vez detectes mi error. Smiley muy feliz

1) He creado un la medida DernierJour = MAX (Transacciones[Date]) (DernierJour significa LastDay en francés Smiley feliz )

-> vuelve el miércoles 24 de febrero de 2016

2) He creado un la medida Jourdernierjour = DÍA DE LA SEMANA ([DernierJour]; 2) (para conocer el día del Último Día)

-> devuelve 3

3) He creado un columna joursemaine = DÍA DE LA SEMANA (Transacciones[Date]; 2) (para saber cada día de la semana para cada fecha)

3) Ahora quiero saber el monto total solo para los días que son miércoles (LastDay), así que he creado la medida:

sumjoursemaine = CALCULATE (SUM (Transacciones[amount]); FILTRO (TODAS (Transacciones); Transacciones[joursemaine]=[jourdernierjour]))

-> devuelve el total de todas las transacciones[amount] (6,8M) sin filtrar el último día (quiero 886K)

table day.png

Mientras que cuando entro en esta fórmula:

sumjoursemaine = CALCULATE (SUM (Transacciones[amount]); FILTRO (TODOS (Transactions); Transacciones[joursemaine]= 3))

Funciona…Smiley frustrado

Gracias de nuevo !!

Mykhael

En respuesta a jessicaf31

De acuerdo, es muy difícil ayudarlo cuando no tengo mucha información sobre sus datos, PERO, usando los valores que nos mostró, encontré una manera de ayudarlo con su problema, puedo enviarle el archivo Power BI si lo desea. solo dame tu email. Déjeme saber si esto ayuda.

Mejor

Miguel Myers

PASO 1.pngPASO 2.pngPASO 3.pngPASO 4.pngPASO 5.pngPASO 6.pngPASO 7.pngPASO 8.pngPASO 9.pngPASO 10.pngPASO 11.png

jessicaf31

En respuesta a Mykhael

@Mykhael ¡¡Muchas gracias por todas estas capturas de pantalla !! Intentaré hacer lo mismo 🙂

La medida sugerida por @Greg_Deckler también funcionó Guiño sonriente

Gracias por tu tiempo !! Smiley feliz

Jessica

En respuesta a jessicaf31

@ jessicaf31 – Creo que su problema es el contexto con su medida jourdernierjour y / o DernierJour. En el contexto de su informe, muestra 3, pero en el contexto de la fila cuando se calcula su medida sumjoursemaine, DernierJour siempre es igual al MAX de esa fila y, por lo tanto, journaldernierjour siempre es igual a la columna joursemaine.

Intente cambiar su medida DernierJour a esto:

DernierJour = MAXX(ALL(Transactions),Transactions[Date])

Lo que esto hace es forzar a DernierJour a evaluar siempre en el contexto de todas las filas, lo que significa que DerierJour siempre será la fecha MAX dentro de la tabla, lo que significa que jourdernierjour siempre será el valor del día de la semana de la fecha MAX en el tabla, lo que * debería * significar que obtiene la respuesta correcta en su informe.

jessicaf31

En respuesta a Greg_Deckler

@Greg_Deckler ¡¡¡Muchas gracias, funcionó !!! Smiley muy feliz

Mykhael

En respuesta a jessicaf31

Hola Jessicaf31

¿Me pueden enviar el archivo? Quiero verlo y comprobar de dónde viene el problema. De esa manera te ayudaré lo antes posible en ese problema que tengas.

Mejor

Mykhael

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *