Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more.
Get startedGrow your Fabric skills and prepare for the DP-600 certification exam by completing the latest Microsoft Fabric challenge.
Hola
He creado una medida que promedia las colocaciones semanales de artículos durante las seis semanas anteriores. (Debido a que el mismo artículo puede colocarse en la misma tienda cada semana, necesito capturar esto a nivel semanal y luego crear un promedio de cifras semanales para que no se cuenten dos veces). La medida funciona, es muy lenta. ¿Podría ofrecer algún consejo sobre cómo optimizar esto? Una nota: Estoy usando una medida para Ubicaciones en este momento, pero podría cambiar a una columna si eso habilita otros métodos.
Solved! Go to Solution.
La transición de contexto podría estar atascóndote en la medida [Ubicaciones]. En mis pruebas, esto devuelve los mismos resultados y es casi 3 veces más rápido.
Placements =
COUNTROWS(
CALCULATETABLE(
VALUES(Sales[Item Name + Store Name]),
Sales[Units Sold] > 0
)
)
Esta es su medida.
Esta es la mía
Ese gráfico parece que estás comparando una línea de tendencia con la real. ¿Qué pasa si pones tus colocaciones y las mías una al lado de la otra en una tabla por fecha?
También había establecido el MaxDate como otra variable y estaba tirando cosas, cuando reescribí con mi sintaxis original de seis MAX(Calendar_Lookup[Date]), nuestros números coincidían. ¡Muchas gracias por su ayuda!
@jdbuchanan71 ¿Puede ver alguna razón por la cual la versión de CalcTable que sugirió afectaría mi capacidad para mover las fechas? Estoy tratando de comparar el promedio semanal de las últimas seis semanas con el promedio semanal de hace 46-51 semanas (tasa de avance de LY). Cuando uso mi antigua medida [Colocaciones], calculará el rango anterior correctamente, pero usando la nueva versión CalcTable de la medida, estas dos producen el mismo resultado:
LY Forward 6W Colocaciones semanales promedio:=
Convierta esto en una medida en lugar de una variable.
TabPlacements = COUNTROWS(CALCULATETABLE(VALUES(Sales[Item Name + Store Name]),Sales[Units Sold]>0))
Luego use la medida en sus otros calcs.
LY Forward 6W Avg Weekly Placements:=
DIVIDE(
CALCULATE([TabPlacements],DATESINPERIOD(Calendar_Lookup[Date],(MAX(Calendar_Lookup[Date])-358),-7,DAY))+
CALCULATE([TabPlacements],DATESINPERIOD(Calendar_Lookup[Date],(MAX(Calendar_Lookup[Date])-351),-7,DAY))+
CALCULATE([TabPlacements],DATESINPERIOD(Calendar_Lookup[Date],(MAX(Calendar_Lookup[Date])-344),-7,DAY))+
CALCULATE([TabPlacements],DATESINPERIOD(Calendar_Lookup[Date],(MAX(Calendar_Lookup[Date])-337),-7,DAY))+
CALCULATE([TabPlacements],DATESINPERIOD(Calendar_Lookup[Date],(MAX(Calendar_Lookup[Date])-330),-7,DAY))+
CALCULATE([TabPlacements],DATESINPERIOD(Calendar_Lookup[Date],(MAX(Calendar_Lookup[Date])-323),-7,DAY))
,6,0
)
La transición de contexto podría estar atascóndote en la medida [Ubicaciones]. En mis pruebas, esto devuelve los mismos resultados y es casi 3 veces más rápido.
Placements =
COUNTROWS(
CALCULATETABLE(
VALUES(Sales[Item Name + Store Name]),
Sales[Units Sold] > 0
)
)
Esta es su medida.
Esta es la mía
Gracias, @jdbuchanan71. No pude reproducir completamente el valor [Placements] con la versión CALCULATETABLE. Estos son los resultados de las dos medidas en el mismo gráfico:
He verificado tres veces las fechas involucradas, así que creo que solo hay una diferencia en los valores que alcanzan las dos medidas. ¿Crees que vale la pena cambiar a una columna?
¡Gracias!
Hola a todos
Gracias por las notas hasta ahora. [Colocaciones] =
¿Puede darnos el cálculo para la medida [Colocaciones]? Es posible que esto le dé el mismo resultado dependiendo de lo que esa medida esté calculando.
Six WK Avg Weekly Placements =
DIVIDE (
CALCULATE (
[Placements],
DATESINPERIOD ( Calendar_Lookup[Date], MAX ( Sales[Date] ), -42, DAY )
),
6
)
Hola @fullcount ,
esa es una buena pregunta. Puede tener algunas razones por las que es lento. Supongo que ayudaría mostrar o analizar la Medida [Colocaciones] tal como la usas muchas veces. ¿Se puede publicar el código fuente de esa medida o mejor el archivo si es posible?
Lo que definitivamente lo hará un poco más rápido es poner el MAX (Sales[Date]) en una variable. Así es que tiene que ser evaluado solo una vez y no 6 veces:
Six WK Avg Weekly Placements =
VAR vMaxDate = MAX(Sales[Date])
RETURN
DIVIDE(
CALCULATE([Placements],DATESINPERIOD(Calendar_Lookup[Date],vMaxDate ,-7,DAY))+
CALCULATE([Placements],DATESINPERIOD(Calendar_Lookup[Date],vMaxDate -7,-7,DAY))+
CALCULATE([Placements],DATESINPERIOD(Calendar_Lookup[Date],vMaxDate -14,-7,DAY))+
CALCULATE([Placements],DATESINPERIOD(Calendar_Lookup[Date],vMaxDate -21,-7,DAY))+
CALCULATE([Placements],DATESINPERIOD(Calendar_Lookup[Date],vMaxDate -28,-7,DAY))+
CALCULATE([Placements],DATESINPERIOD(Calendar_Lookup[Date],vMaxDate -35,-7,DAY)),
6,
0
)