Forum Discussion
Optimizar panel
Hola
He creado varias medidas, pero no es realmente optimizar. Cuando lo publico, tarda mucho en tener los números en el objeto visual Pago.
He hecho un análisis de rendimiento y este es el resultado. Puede ver que la consulta DAX tarda demasiado tiempo
Mi archivo PBIX está aquí.
¿Puede alguien ayudarme a optimizar la medida "YTD Commission Payout", Por favor?
Gracias
En realidad, intenté una cosa más para optimizar una de las medidas dependientes. Usando este en su lugar lo consigue por debajo de 400 ms.
Pago de la Comisión YTD -1Meses ?
VAR vMonths ?
CALCULATETABLE (
VALUES ( Fechas[Mes del año] ),
FILTRO (
ALL ( Fechas ),
Fecha[Fecha]
< MIN ( Fechas[Fecha] )
)
)
VAR vSummary ?
ADDCOLUMNS (
vMonths,
"cYTDComm", [Comisión YTD]
)
VAR vMaxMonth ?
MAXX (
FILTRO (
vSummary,
[cYTDComm] > 0
),
Fechas[Mes del año]
)
devolución
SUMX (
FILTRO (
vSummary,
Fechas[Año Mes] - vMaxMonth
),
[cYTDComm]
)saludos
palmadita
9 Replies
- mahoneypat
Microsoft Employee
Hay varias cosas mal con esa medida y las que depende. Hay iteradores anidados, medidas dentro de iteradores algunos usando IF( ) que todos suman un rendimiento deficiente. ¿Puede explicar lo que se supone que debe hacer esa medida, por lo que se puede proponer una nueva medida a partir de cero, creo?
saludos
palmadita
- Zilliox
Helper IV
Es muy amable de tu parte.
El resultado es el pago de comisiones.
Se basa en el logro YTD. Cada persona tiene una diferente (Consulta OTE) (esta es la comisión anual).
Si el logro YTD es inferior al 80% tiene que ser 0. Si es superior al 100% que se mantiene en 100%. El monto tiene que estar en la moneda de la persona.
La imagen de abajo es el resultado que estoy buscando, pero luego con una mejor medida
Gracias de nuevo
- mahoneypat
Microsoft Employee
¿Puede proporcionar una explicación más detallada de lo que necesita en ese cálculo? Qué agregación en qué columnas y qué condiciones. Tal vez caminar a través de un valor en la matriz.
saludos
palmadita
- Zilliox
Helper IV
Hola
Agrego un archivo de Excel con las fórmulas. Espero poder explicar mejor en las fórmulas.
Gracias por ayudarme
- Zilliox
Helper IV
Hi,
I have tried to create a new messure and I think I am on the good way, but I am stuck for the moment
This is teh achievement. In september the YTD achievement is lower than 80%. So the sales shouldn't receive any commission that month, but in October his YTD ach is 86%. The sales recuperate as well september.
My Measuretest =
CALCULATE(
SUMX(
VALUES(Dates[Year Month]),
VAR _YTDOTE = TOTALYTD(SUM(OTE[Amount]),Dates[Date],"31/03/2021")*1
VAR _YTDOTE_YTDACH = CALCULATE(TOTALYTD(SUM(OTE[Amount]),Dates[Date],"31/03/2021")*1)*[YTD Ach.]
VAR _YTDAmount = CALCULATE(TOTALYTD(SUM(Actual_CommissionsData_KPICOM[Amount in currency with Current Xrate]),Dates[Date],"31/03/2021") + TOTALYTD(SUM('Manual Transaction'[Amount €]),Dates[Date],"31/03/2021"))
VAR _YTDTarget = TOTALYTD(SUM(Targets[Target]),Dates[Date],"31/03/2021")
VAR _YTDOTE_LM = CALCULATE(TOTALYTD(SUM(OTE[Amount]),Dates[Date],"31/03/2021"),PREVIOUSMONTH(Dates[Date]))
VAR _YTDAch = DIVIDE(_YTDAmount,_YTDTarget)
VAR _YTDOTE_YTDACH_LM = CALCULATE(TOTALYTD(SUM(OTE[Amount]),Dates[Date],"31/03/2021")*[YTD Ach.],PREVIOUSMONTH(Dates[Date]))
RETURN
IF(
_YTDAch<0.8,BLANK(),
IF(
_YTDAch >= 1,
CALCULATE(_YTDOTE -_YTDOTE_YTDACH_LM),
CALCULATE(_YTDOTE_YTDACH -_YTDOTE_YTDACH_LM))
)))
Result202004 1415.78
202005 1415.78
202006 1415.78
202007 629.13
202008 1033.83
202009
202010 2035.81In October I should have 2632.51. As the sales has reached YTD 86.20% he recuperate september too. The max reachable is 100%
I do not know how I can add this in the measure. Can someone help me please?
Thanks
- Zilliox
Helper IV
- mahoneypat
Microsoft Employee
Perdón por el retraso. Estoy ocupado con el trabajo. Su medida es una mejor dirección; sin embargo, terminé optimizando su medida original.
Resulta que es su medida [YTD Commission Payout -1M] la que estaba causando todos sus problemas. Una corrección simple dejó de lado el tiempo de actualización de ese objeto visual de >26 seg a <2 seg (en mi equipo). Probablemente todavía podría optimizarse aún más, pero creo que estarás contento con este progreso.
Esta es la nueva medida
Pago de la Comisión YTD -1Meses ?
CALCULAR (
LASTNONBLANKVALUE (
Fechas[Mes del Año],
CALCULAR (
[Comisión YTD],
PREVIOUSMONTH ( Fechas[Fecha] )
)
),
FILTRO (
ALL ( Fechas ),
Fecha[Fecha]
<-MAX MAX ( Fechas[Fecha] )
)
)Probablemente no escribiría esta medida de esta manera, pero todo lo que hice fue cambiar de Dates[Date] a Dates[Year Month]. Para que en el camino a averiguar eso, había escrito su medida original de manera diferente. Y con la medida anterior, los dos combinados son un poco más rápidos.
Pago de la Comisión YTD (YTD Commission Payout)
VAR vSummary ?
ADDCOLUMNS (
VALUES ( Fechas[Mes del año] ),
"cYTDComm", [Comisión YTD],
"cYTDCommPay-1M", [Pago de comisión YTD -1Month],
"cManCommPay",
CALCULAR (
SUM ( 'Pago manual de la comisión'[Importe] )
)
)
devolución
SUMX (
vSummary,
SI (
ISBLANK ( [cYTDComm] ),
BLANK (),
[cYTDComm] - [cYTDCommPay-1M] + [cManCommPay]
)
)Todavía es más de 1,5 s para actualizar ese objeto visual, pero no tuve más tiempo para gastar en él.
saludos
palmadita
- mahoneypat
Microsoft Employee
En realidad, intenté una cosa más para optimizar una de las medidas dependientes. Usando este en su lugar lo consigue por debajo de 400 ms.
Pago de la Comisión YTD -1Meses ?
VAR vMonths ?
CALCULATETABLE (
VALUES ( Fechas[Mes del año] ),
FILTRO (
ALL ( Fechas ),
Fecha[Fecha]
< MIN ( Fechas[Fecha] )
)
)
VAR vSummary ?
ADDCOLUMNS (
vMonths,
"cYTDComm", [Comisión YTD]
)
VAR vMaxMonth ?
MAXX (
FILTRO (
vSummary,
[cYTDComm] > 0
),
Fechas[Mes del año]
)
devolución
SUMX (
FILTRO (
vSummary,
Fechas[Año Mes] - vMaxMonth
),
[cYTDComm]
)saludos
palmadita
- Zilliox
Helper IV
Está funcionando.
Muchas gracias por su ayuda