Forum Discussion
Conmutador(SELECTEDVALUE DAX Rendimiento lento
Tengo un golpe de 2 a 3 segundos en el rendimiento en esta situación y no puedo entender por qué. Mi medida es: Switch (SELECTEDVALUE(Time_Frame_Selection[Marco de tiempo],"año"), "Año", [Ventas netas YTD], "Trimestre", [Ventas netas QTD] "Período", [Ventas netas PTD])). NOTA: la tabla Time_Frame_Selection es una pequeña tabla de 1 columna y 3 filas desconectada del modelo de datos de esquema en estrella. Cuando tengo la columna de la tabla desconectada "Marco de tiempo" sin filtrar, naturalmente el valor predeterminado "año" se selecciona en "Valor seleccionado" y la medida anterior es RÁPIDO (medio segundo). Pero si aplico el filtro en la columna de la tabla desconectada en una segmentación de datos o panel de filtro, la misma medida tarda exactamente 2,5 segundos. El plan de consulta cambia completamente y es mucho más complejo cuando filtro la columna de la tabla desconectada que cuando la dejo sin filtrar. La única diferencia en todo esto es el resultado basado en "Selectedvalue". Naturalmente, si no filtro la columna de tabla desconectada, se selecciona el valor predeterminado y funciona rápidamente. Agradecería mucho cualquier ayuda. Aquí hay un enlace al archivo .pbix en el buzón de entrega.
Los planes de consulta se muestran debajo de la primera es cuando la columna NO se filtra (primera imagen con un plan de consulta más corto) la segunda imagen es cuando se aplica el filtro en la tabla desconectada. (segunda imagen con plan de consulta más largo). Vea cuánto más complejo es el seond donde se aplica el filtro.
Plan de consulta FAST cuando la tabla desconectada NO se filtra:
Plan de consulta SLOW cuando se filtra la tabla desconectada:
LENTO:
Consulta DAX
DEFINIR
VAR __DS0FilterTable =
TREATAS({"año"}, 'Time_Frame_Selection'[Marco temporal])
VAR __DS0Core =
RESUMIR COLUMNAS(
«FACT_Invoice» [Factura NBR],
'DIM_II_Item'[Clave del elemento],
'DIM_II_CUST_Site_Bill_To'[Clave del sitio (factura)],
__DS0FilterTable,
"Net_Sales_CY", 'FACT_Invoice'[Ventas netas CY]
)
VAR __DS0PrimaryWindowed =
TOPN(
502,
__DS0Core,
'FACT_Invoice'[Factura NBR],
1,
'DIM_II_Item'[Clave del elemento],
1,
«DIM_II_CUST_Site_Bill_To»[Clave del sitio (factura)],
1
)
EVALUAR
__DS0PrimaryWindowed
CASI:
Consulta DAX
DEFINIR
VAR __DS0FilterTable =
TREATAS({"año"}, 'Time_Frame_Selection'[Marco temporal])
VAR __DS0Core =
RESUMIR COLUMNAS(
«FACT_Invoice» [Factura NBR],
'DIM_II_Item'[Clave del elemento],
'DIM_II_CUST_Site_Bill_To'[Clave del sitio (factura)],
__DS0FilterTable,
"Net_Sales_YTD", 'FACT_Invoice'[Ventas netas YTD]
)
VAR __DS0PrimaryWindowed =
TOPN(
502,
__DS0Core,
'FACT_Invoice'[Factura NBR],
1,
'DIM_II_Item'[Clave del elemento],
1,
«DIM_II_CUST_Site_Bill_To»[Clave del sitio (factura)],
1
)
EVALUAR
__DS0PrimaryWindowed
2 Replies
- Syndicate_Admin
Administrator
@noahh , Opción, Pruebe si puede usar parámetros de campo
En segundo lugar, en lugar de la medida, tener el cálculo de la medida en sí mismo
Switch(SELECTEDVALUE(Time_Frame_Selection[Time Frame],"year"), "Year", CALCULATE(SUM(Sales[Sales Amount]),DATESYTD('Date'[Date],"12/31")),
"Trimestre", CALCULAR(SUMA(Ventas[Importe de ventas]),DATESQTD('Fecha'[Fecha],"12/31")),
"Period", CALCULATE(SUM(Sales[Sales Amount]),DATESYTD('Date'[Date],"12/31"))
)
Consulte este ejemplo
https://medium.com/chandakamit/power-bi-when-i-felt-lazy-and-i-needed-too-many-measures-ed8de20d9f79
- Syndicate_Admin
Administrator
@amitchandak gracias por la rápida respuesta. La opción 2 (colocar la calucación de la medida real en la medida de la declaración de cambio) NO acelera las cosas. ¿Se produce el mismo problema? La opción 1 (parámetros de campo) mejora el rendimiento, pero no es una opción porque tengo toneladas de medidas que dependen de estas tablas desconectadas y requeriría crear muchas tablas de parámetros archivadas que serían difíciles de mantener. ¿Existe una solución para mejorar el rendimiento? ¿No entiendo por qué está sucediendo esto? Gracias por su ayuda, realmente aprecio su tiempo.