Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
Hola
Está tardando 5 minutos en filtrar visualmente con otros. Me gustaría saber cómo puedo optimizar este código dax para funcionar mejor o cualquier otra alternativa.
Tiempo tomado:-
El objeto visual utiliza 3 medidas diferentes:
Dax_1: (UTILIZADO en Visual) -
3 Months Rolling Average =
VAR A =
CALCULATE (
[Measure Selection Rolling 3 Months Avg],
FILTER (
VALUES ( 'UCD Data'[Sold_To_Ultimate_DUNS_Desc] ),
[Dynamic Segment DP DDD] <> BLANK ()
)
)
VAR B =
CALCULATE (
[Measure Selection Rolling 3 Months Avg],
FILTER (
VALUES ( 'UCD Data'[Sold_To_Ultimate_DUNS_Desc] ),
[Dynamic Segment % UCD] <> BLANK ()
)
)
VAR c =
IF (
ISFILTERED ( 'DP DDD Dynamic Segmentation'[Buckets] ),
A,
IF (
ISFILTERED ( 'Dynamic Segement %UCD'[Bucket] ),
B,
[Measure Selection Rolling 3 Months Avg]
)
)
RETURN
c
Dax2: -
Moving Average UCD last 3 Months =
/*Rolling three months Average*/
Var A = CALCULATE(SUM('UCD Data'[Unearned Disc]),
DATESINPERIOD (
'Target Date1'[Date],
LASTDATE ( 'Target Date1'[Date]),
-3,
MONTH
)
)
var B = CALCULATE(SUM('UCD Data'[Total_disc]),
DATESINPERIOD (
'Target Date1'[Date],
LASTDATE ( 'Target Date1'[Date]),
-3,
MONTH
)
)
var c = (A/B)*100
return
c
DAX_3 :
Dynamic Segment % UCD =
IF(
ISFILTERED('Dynamic Segement %UCD'[Bucket]),
CALCULATE(
[unearned disc greater than 0],
FILTER(
VALUES('UCD Data'[Sold_To_Ultimate_DUNS_Desc]),
COUNTROWS(
FILTER(
'Dynamic Segement %UCD',
[_% UCD]>='Dynamic Segement %UCD'[Min]
&& [_% UCD]<'Dynamic Segement %UCD'[Max]
)
)>0
)
),
[_% UCD]
)
Gracias
Akhil.
Hola, @Akhil_1411
Le sugiero que consulte el documento sobre las prácticas recomendadas de Dax para mejorar Power BI. Aquí hay algunas instrucciones sobre Dax.
1. Borre la caché de DAX antes de optimizar DAX
2. Formatee su código
3. No cambie los valores DE BLANCO a ceros u otras cadenas
4. Utilice las funciones DISTINCT() y VALUES() de forma coherente
5. Utilice ISBLANK() en lugar de la comprobación de la casilla de verificación de la casilla de verificación (Blank()
6. Utilice el valor 0 en lugar de comprobar si hay ISBLANK() 0
7. Utilice SELECTEDVALUE() en lugar de HASONEVALUE()
8. Utilice SELECTEDVALUE() en lugar de VALUES()
9. Utilice variables en lugar de repetir medidas dentro de la rama IF
10. Utilice (a-b)/b junto con variables en lugar de a/b — 1 o a/b*100–100
11. Deje de usar IFERROR() e ISERROR()
12. Utilice DIVIDE() en lugar de /
13. No utilice variables escalares en SUMMARIZE()
14. Utilice KEEPFILTERS() en lugar de FILTER(T)
15. Utilice FILTER(all(ColumnName)) en lugar de FILTER(values()) o FILTER(T)
16. Evite utilizar la función AddColumns() dentro de expresiones de medida
17. Utilice los tipos de datos correctos en función de los valores de columna
18. Utilice COUNTROWS en lugar de COUNT
19. Utilice SEARCH() con el último parámetro
20. TODOS frente a ALLExcept
Saludos
Allan
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
@Akhil_1411 - Vea mis artículos aquí sobre el ajuste de rendimiento DAX:
https://community.powerbi.com/t5/Community-Blog/Performance-Tuning-DAX-Part-1/ba-p/976275
https://community.powerbi.com/t5/Community-Blog/Performance-Tuning-DAX-Part-2/ba-p/976813
Además, ayudaría mucho a tener datos de muestra, etc. Por favor, consulte este post sobre cómo obtener su pregunta respondida rápidamente: https://community.powerbi.com/t5/Community-Blog/How-to-Get-Your-Question-Answered-Quickly/ba-p/38490
Las partes más importantes son:
1. Datos de muestra como texto, utilice la herramienta de tabla en la barra de edición
2. Salida esperada de los datos de muestra
3. Explicación en palabras de cómo obtener de 1. a 2.
No hay idea de si esto funciona, pero darle una oportunidad! 🙂
3 Months Rolling Average =
VAR Table =
SUMMARIZE(
VALUES ( 'UCD Data'[Sold_To_Ultimate_DUNS_Desc] ),
"Filter 1" , [Dynamic Segment DP DDD] ,
"Filter 2" , [Dynamic Segment % UCD] ,
"Rolling Avg" , [Measure Selection Rolling 3 Months Avg]
)
VAR A =
SUMX(FILTER( Table , [Filter 1] <> BLANK() , [Rolling Avg])
VAR B =
SUMX(FILTER( Table , [Filter 2] <> BLANK() , [Rolling Avg])
VAR c =
IF (
ISFILTERED ( 'DP DDD Dynamic Segmentation'[Buckets] ),
A,
IF (
ISFILTERED ( 'Dynamic Segement %UCD'[Bucket] ),
B,
[Measure Selection Rolling 3 Months Avg]
)
)
RETURN
c
Br
J
@tex628 ,
He probado tu lógica. No está sucediendo. Después de aplicar el filtrado cruzado no está sucediendo. 😐
Gracias
Akhil.
¿Cuáles son los tiempos de carga individuales de estas tres medidas?
[Segmento dinámico DP DDD]
[Segmento dinámico % UCD]
[Selección de medida Rolling 3 Meses Promedio]
Hmm, para mí esto es un poco demasiado difícil de resolver sin ser capaz de escribir mi propio código. ¿Asumo que los datos son confidenciales?
/ J
@Akhil_1411, para el primero. Prueba primero como
Promedio de 3 meses de balanceo ?
SI (
ISFILTERED ( 'DP DDD Dynamic Segmentation'[Buckets] ),
CALCULAR (
[Selección de medida Rolling 3 Meses Promedio],
FILTRO (
VALORES ( 'Datos UCD'[Sold_To_Ultimate_DUNS_Desc] ),
[Segmento dinámico DP DDD] <> BLANK ()
)
),
SI (
ISFILTERED ( 'Dynamic Segement %UCD'[Bucket] ),
CALCULAR (
[Selección de medida Rolling 3 Meses Promedio],
FILTRO (
VALORES ( 'Datos UCD'[Sold_To_Ultimate_DUNS_Desc] ),
[Segmento dinámico % UCD] <> BLANK ()
)
),
[Selección de medida Rolling 3 Meses Promedio]
)
)
@Akhil_1411 , qué es el uso de VALUES ( 'Datos UCD'[Sold_To_Ultimate_DUNS_Desc] )
@amitchandak , valores que toman la columna de clientes distintos y calulando el %UCD y otras métricas.
Esto estoy pasando debido a la otra filtración cruzada visual
Otro objeto visual tiene clientes distintos con % UCD. Captura de pantalla a continuación
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
1 | |
1 | |
1 | |
1 |