Medida de cambio lento

Un usuario Pregunto ✅

D0minique

Hola,

Me preguntaba si alguien ha encontrado una solución funcional para el problema de la declaración de cambio lento.

Para mi tablero, me gustaría cambiar entre más de 100 medidas (a esto lo llamo la medida base). Todas las medidas dentro de la declaración de cambio son simples sumas de columnas y promedios. Esta medida base se utiliza en todo tipo de otras medidas, como los cálculos YOY. El rendimiento se ralentiza cuando se agregan más medidas a la declaración de cambio.

He leído varias publicaciones sobre este tema, pero lamentablemente ninguna de las soluciones propuestas funcionó para mí:
https://www.reddit.com/r/PowerBI/comments/gaytnc/measure_slow_due_to_weird_switchselectedvalue/

https://social.msdn.microsoft.com/Forums/windowsapps/en-US/92acbe55-242f-4578-99b1-fc9464e425ea/dax-…

https://stackoverflow.com/questions/61805513/force-dax-switch-function-to-use-strict-lazy-short-circ…

https://community.powerbi.com/t5/DAX-Commands-and-Tips/Slow-Performance-Switch/mp/1795454#M37826

https://community.powerbi.com/t5/Desktop/Slow-Switch-Statement/mp/1085972#M502954

El resumen de características de mayo de 2021 del servidor de informes de power bi anunció que «se ha realizado una mejora en el rendimiento de la función SWITCH con muchas ramas y funciones IF profundamente anidadas para eliminar las ramas que no son seleccionadas por los filtros de usuario o las segmentaciones antes en la canalización de cálculo». (https://powerbi.microsoft.com/en-us/blog/power-bi-report-server-may-2021-feature-summary/#perf). Pero en mi caso, el rendimiento sigue siendo demasiado lento.

Además, traté de resolver este problema haciendo uso de grupos de cálculo. Pero el mismo problema se aplica aquí. Cuanto mayor sea el número de elementos de cálculo, más lento será el rendimiento; https://community.powerbi.com/t5/Issues/Calculation-Group-slows-down-as-the-number-of-Calculation-It….

¿Alguien tiene idea de cómo se podría solucionar este problema? ¡Gracias por adelantado!

dominique

————————————————– —————————

Actualización 6 de julio de 2021:

Me gustaría agradecer a todos por ayudar 🙂
La solución que elegimos implementar es dividir las medidas en múltiples medidas de ‘cambio’. En lugar de tener una sola página con muchas medidas, tenemos varias copias de la página, cada una con su propia medida de cambio que contiene 5 medidas como máximo, usando grupos de cálculo para reemplazar las medidas en las imágenes.

mfelix

Hola @D0minique,

¿Cuál es el propósito de esta función de cambio para tener los cálculos de YOY, YTD, etc.?

En este caso, debe hacer uso de los grupos calculados que permiten tener una sola medida que replica su cálculo sobre un conjunto de otras medidas.

https://www.sqlbi.com/calculation-groups/

D0minique

En respuesta a mfelix

Hola @MFelix, ¡gracias por tu sugerencia! Ya probé esta opción siguiendo el siguiente ejemplo;

https://www.sqlbi.com/articles/using-calculation-groups-to-selectively-replace-measures-in-dax-expre….
Desafortunadamente, esto no mejoró el rendimiento. Muchos elementos del grupo de cálculo conducen a los mismos problemas de rendimiento que muchas medidas en la declaración de cambio; https://community.powerbi.com/t5/Issues/Calculation-Group-slows-down-as-the-number-of-Calculation-It….

Stefano Grimaldi

En respuesta a D0minique

intente ejecutar un análisis de rendimiento y muestre aquí los resultados, también tome el dax de esas medidas y ejecútelos en el estudio de dax para obtener una mejor visión del problema, el análisis podría mostrar que es un problema completamente diferente y no las medidas de dax en sí.

tambien busquen a los bebes feos: https://www.youtube.com/watch?v=91D1WrNrHtY

D0minique

En respuesta a Stefano Grimaldi

Hola @StefanoGrimaldi, ¡gracias por tu comentario! Usé el analizador de rendimiento y el estudio DAX para investigar el problema, pero debo decir que no soy un experto en esto, por lo que no me dio nuevas ideas para mejorar;

D0minique_0-1624974362080.pngD0minique_1-1624974381317.png

En cuanto al video que enviaste;
– La cantidad de elementos visuales no parece ser el problema aquí, ya que la consulta DAX consume la mayor parte del tiempo.
– Tenemos un modelo de datos de esquema en estrella
– Tal vez la consulta DAX podría optimizarse, pero mis experimentos parecen indicar que la función de cambio es el cuello de botella.

Realicé los siguientes experimentos;

Experimentar Descripción DAX Mejora
0 Caso base, la medida original

VAR VarID = SELECTEDVALUE( ‘Variables del tablero'[ID] )

VAR Resultado = INTERRUPTOR( VarID,

1, [SUM Area (Crops)],

2, [SUM SO (Crops)],
etc

1 Interruptor reemplazado con una medida [SUM Area (Crops)] Factorizar 10
2 Menos compases en switch (10 en vez de 35) Factor 3
3 Reemplazó todas las medidas con 1 excepto una

INTERRUPTOR(VarID,

1, 1,

2, 1,

3, 1,

34, [SUM SOTotaal],

etc

factor 4
4 Reemplazó todas las medidas con una medida

INTERRUPTOR(VarID,

1, [SUM SOTotaal],

2, [SUM SOTotaal],

3, [SUM SOTotaal],

34, [SUM SOTotaal],

etc

factor 2
5 Dosificación de medidas

Cambio de variable:=

VAR VarID = SELECTEDVALUE( ‘Variables del tablero'[Table] )

VAR Resultado = INTERRUPTOR( VarID,

«Animales», [Variable switch animals],

«Cultivos», [Variable switch crops],

«BRSDetalles», [Variable switch BRSDetails]

)

VOLVER Resultado

Interruptor variable BRSDetalles:=

VAR VarID = SELECTEDVALUE( ‘Variables del tablero'[ID] )

VAR Resultado = INTERRUPTOR( VarID,

33, [N BRS (BRSDetail)],

34, [SUM SOTotaal],

35, [AVG SOTotaal]

)

VOLVER Resultado

Sin mejora
6 Grupos de cálculo

CALCULATE( MEDIDA SELECCIONADA(), TRATAMIENTOS( VALORES( ‘Variables CG del Tablero'[Measure name] ), ‘Ayuda de variables de CG del tablero'[Measure] ) )

https://www.sqlbi.com/articles/using-calculation-groups-to-selectively-replace-measures-in-dax-expre…

Sin mejora

Stefano Grimaldi

En respuesta a D0minique

sí, el problema es la opción de cambio aquí, y eso es un dax bastante simple y parece bueno, tal vez intente hacer una tabla de agregación para ambas funciones de sumas que pueden darle un pequeño impulso en el rendimiento de ese dax mientras tanto.

D0minique

En respuesta a Stefano Grimaldi

Sí, podría considerar esa opción. Pero también tenemos muchas dimensiones, por lo que las tablas agregadas seguirán siendo grandes, a menos que minimice las dimensiones para filtrar, lo que sería un gran revés…

Stefano Grimaldi

En respuesta a D0minique

pero la tabla de agregación no está relacionada con el dimensional, cuando configura una agregación, solo está vinculada a la tabla de hechos que utilizará, las tablas de agregación no se usan para hacer informes reales, son un backend, digamos una solución que acelera la información solicitada en el hecho tabla por los informes. o relacionado con las dimensiones en sí como parte de la tabla, todo depende del enfoque

las únicas desventajas de las tablas de agregación, digamos, aumentarán el tamaño del modelo según la cantidad de datos que contenga.

D0minique

En respuesta a Stefano Grimaldi

Oh ahora entiendo. ¡Gracias por esta aclaración!

mfelix

En respuesta a D0minique

Hola @D0minique,

Teniendo en cuenta que tiene un gran conjunto de datos y dependiendo de los cálculos que desee, tal vez sea bueno en términos de rendimiento verificar las agregaciones:

https://docs.microsoft.com/en-us/power-bi/transform-model/desktop-aggregations

Esto puede reduzca el tamaño de las tablas para que pueda concentrarse en los datos importantes y mejorar el rendimiento de las consultas. Las agregaciones permiten el análisis interactivo de big data de maneras que no serían posibles de otro modo y pueden reducir drásticamente el costo de desbloquear grandes conjuntos de datos para la toma de decisiones

D0minique

En respuesta a mfelix

Gracias, @MFélix. Una buena opción a tener en cuenta. Stefano Grimaldi mencionó esto también. Sin embargo, también tenemos muchas dimensiones, por lo que las tablas agregadas seguirán siendo grandes, a menos que minimice las dimensiones para filtrar, lo que sería un gran revés…

En respuesta a D0minique

Hola @D0minique,

Hay 10 métodos para acelerar su informe. No se si te puede ayudar un poco.

1. Conserva solo las imágenes necesarias
2. Use números enteros en lugar de valores de texto siempre que sea posible
3. Apéguese a las imágenes predeterminadas de Power BI
4. Evite las relaciones bidireccionales en su modelo de datos
5. Comprender la diferencia entre consultas duplicadas y de referencia
6. Solo cargue datos sobre los que se informará
7. Los cortadores pueden ser verdaderos asesinos del rendimiento
8. Piense demasiado en su técnica de modelado de datos
9. Granularidad dividida para reducir la cardinalidad
10. Mida el rendimiento: obtenga una visión clara del rendimiento actual de un informe para que pueda medir cuantitativamente y comparar el resultado de cualquiera de las acciones realizadas. Power BI tiene una característica integrada, llamada analizador de rendimiento, que permite a los usuarios medir cuánto tiempo se dedica a representar imágenes y cuánto tiempo se dedica a ejecutar código DAX. Incluso le brinda el extracto completo del código DAX, que puede analizar más a fondo en herramientas como DAX Studio.

Acerca del analizador de rendimiento, puede consultar Usar el Analizador de rendimiento para examinar el rendimiento de los elementos del informe.

Y hay otras herramientas Top 5 Power BI Performance Analyzer.

También hay un documento oficial que puede consultar

Guía de optimización para Power BI

Atentamente,

Esteban Tao

Si esta publicación ayuda, entonces por favor considere Acéptalo como la solución. para ayudar a los otros miembros a encontrarlo más rápidamente.

D0minique

En respuesta a v-stephen-msft

Hola @v-stephen-msft, ¡gracias por esta buena descripción general!

Deja un comentario

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