Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

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.

Reply
Syndicate_Admin
Administrator
Administrator

Aumentar la eficiencia de la medición

Hola
Tengo un conjunto de datos de consulta directa de aproximadamente 3000 filas. Una de las filas contiene un valor int de segundos.
En PBI he hecho una medida que es simplemente MAX(table[DurationInSecs]), pero lo he configurado para que sea un formato dinámico y en el formato he hecho esto:

Fueron _vSecs = SELECTEDMEASURE()
Fueron _vMins = INT(DIVIDIR(_vSecs, 60, 0))
Fueron _vRemainingSecs = INT(MANERA(_vSecs, 60))
Fueron _vHours = INT(DIVIDIR(_vMins, 60,0))
Fueron _vRemainingMins = INT(MANERA(_vMins, 60))
Fueron _vDays = INT(DIVIDIR(_vHours, 24, 0))
Fueron _vRemainingHours = INT(MANERA(_vHours, 24))

Fueron _d = SUSTITUTO(_vDays, "0", "\0")
Fueron _h = SUSTITUTO(_vRemainingHours, "0", "\0")
Fueron _m = SUSTITUTO(_vRemainingMins, "0", "\0")
Fueron _s = SUSTITUTO(_vRemainingSecs, "0", "\0")

Fueron _d_h_m_s = _d & "d" & _h & "h" & _m & "m, " & _s & "s"
Fueron _h_m_s = _h & "h" & _m & "m" & _s & "s"
Fueron _m_s = _m & "m" & _s & "s"
Fueron __s = _s & "s"

DEVOLUCIÓN
INTERRUPTOR(VERDADERO(),
_vSecs >= 86400, _d_h_m_s,
_vSecs >= 3600, _h_m_s,
_vSecs >= 60, _m_s,
_s)

Estrictamente hablando, esto funciona bien y produce el resultado deseado, pero es bastante lento.
Así que estoy buscando algún consejo para aumentar la eficiencia.

¿Alguna aportación, alguien?

Saludos
Mads
1 ACCEPTED SOLUTION

Sin embargo, su sugerencia me dio un código mejor/más eficiente para la declaración RETURN.
Cambié mi DAX a lo siguiente y los resultados son buenos y la velocidad es mucho mejor.

Muchas gracias 🙂

Fueron _vSecs = SELECTEDMEASURE()
Fueron _vMins = INT(DIVIDIR(_vSecs, 60, 0))
Fueron _vRemainingSecs = INT(MANERA(_vSecs, 60))
Fueron _vHours = INT(DIVIDIR(_vMins, 60,0))
Fueron _vRemainingMins = INT(MANERA(_vMins, 60))
Fueron _vDays = INT(DIVIDIR(_vHours, 24, 0))
Fueron _vRemainingHours = INT(MANERA(_vHours, 24))

Fueron _d = SUSTITUTO(_vDays, "0", "\0")
Fueron _h = SUSTITUTO(_vRemainingHours, "0", "\0")
Fueron _m = SUSTITUTO(_vRemainingMins, "0", "\0")
Fueron _s = SUSTITUTO(_vRemainingSecs, "0", "\0")

DEVOLUCIÓN
SI ( _vSecs >= 86400, _d & "d" )
& SI ( _vSecs >= 3600, _h & "h" )
& SI ( _vSecs >= 60, _m & "m" ) & _s & "s"



Saludos
Mads

View solution in original post

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

Hola @MadBern85 ,

Puede intentar usar las siguientes expresiones si ayuda:

format = 
VAR _vTS = SELECTEDMEASURE()
VAR _vDays =
    INT ( DIVIDE ( _vTS, 86400, 0 ) )
VAR _vHours =
    INT ( DIVIDE ( _vTS - _vDays * 86400, 3600, 0 ) )
VAR _vMins =
    INT ( DIVIDE ( _vTS - _vDays * 86400 - _vHours * 3600, 60 ) )
VAR _vSecs = _vTS - _vDays * 86400 - _vHours * 3600 - _vMins * 60
RETURN
    IF ( _vTS > 86400, _vDays & "d " )
        & IF ( _vTS > 3600, _vHours & "h " )
        & IF ( _vTS > 60, _vMins & "m " ) & _vSecs & "s"

1.png

Saludos

Xiaoxin Sheng

Hola

Gracias por la sugerencia, esto se acerca bastante a algo que ya he probado y la velocidad ha mejorado mucho, pero produce algunos errores. Lo cual no he podido corregir.

MadBern85_0-1713939600965.png

Saludos
Mads

Sin embargo, su sugerencia me dio un código mejor/más eficiente para la declaración RETURN.
Cambié mi DAX a lo siguiente y los resultados son buenos y la velocidad es mucho mejor.

Muchas gracias 🙂

Fueron _vSecs = SELECTEDMEASURE()
Fueron _vMins = INT(DIVIDIR(_vSecs, 60, 0))
Fueron _vRemainingSecs = INT(MANERA(_vSecs, 60))
Fueron _vHours = INT(DIVIDIR(_vMins, 60,0))
Fueron _vRemainingMins = INT(MANERA(_vMins, 60))
Fueron _vDays = INT(DIVIDIR(_vHours, 24, 0))
Fueron _vRemainingHours = INT(MANERA(_vHours, 24))

Fueron _d = SUSTITUTO(_vDays, "0", "\0")
Fueron _h = SUSTITUTO(_vRemainingHours, "0", "\0")
Fueron _m = SUSTITUTO(_vRemainingMins, "0", "\0")
Fueron _s = SUSTITUTO(_vRemainingSecs, "0", "\0")

DEVOLUCIÓN
SI ( _vSecs >= 86400, _d & "d" )
& SI ( _vSecs >= 3600, _h & "h" )
& SI ( _vSecs >= 60, _m & "m" ) & _s & "s"



Saludos
Mads

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors