Número entero a segundos y luego tiempo de duración (dd: hh: mm: ss)

Un usuario Pregunto ✅

c-iakovidou

¡Hola chicos!

Tengo una columna que se llama Segundos totales. Esta es una columna de números enteros y el objetivo es crear un gráfico que muestre el tiempo de duración promedio necesario para completar un curso. (el formulario que me gustaría presentar es este dd: hh: mm: ss

La única información que tengo son segundos.

c-iakovidou_0-1623150088493.png

Hola @ c-iakovidou

Cuando elija primero, devolverá el valor de la primera línea de visual.

En cuanto al valor promedio que desea, tengo un método, tal vez pueda consultarlo. Cree columnas calculadas como estas:

average seconds = AVERAGE('Table'[total seconds])

Duration average  = 
VAR Duration = 'Table'[average seconds]
VAR Hours =INT ( Duration / 3600)
VAR Minutes =INT ( MOD( Duration - ( Hours * 3600 ),3600 ) / 60)
VAR Seconds =ROUNDUP(MOD ( MOD( Duration - ( Hours * 3600 ),3600 ), 60 ),0) 
VAR H =IF ( LEN ( Hours ) = 1, 
        CONCATENATE ( "0", Hours ),
        CONCATENATE ( "", Hours ))
VAR M =IF (
        LEN ( Minutes ) = 1,
        CONCATENATE ( "0", Minutes ),
        CONCATENATE ( "", Minutes ))
VAR S =IF (
        LEN ( Seconds ) = 1,
        CONCATENATE ( "0", Seconds ),
        CONCATENATE ( "", Seconds ))
RETURN
    CONCATENATE (H,CONCATENATE ( ":", CONCATENATE ( M, CONCATENATE ( ":", S ) ) ) )

Y el resultado es el que se muestra:

Ailsamsft_0-1623919286283.png

No puede agregar directamente la columna de duración original directamente a la tarjeta, porque no puede calcular directamente el valor promedio. Puede calcular el valor medio de ‘Tabla'[total seconds] primero, luego convierta el valor promedio y agregue el valor convertido a la tarjeta.

He adjuntado mi archivo pbix, puede consultarlo.

Atentamente

Equipo de apoyo de la comunidad _ Ailsa Tao

Hola @ c-iakovidou

Cuando elija primero, devolverá el valor de la primera línea de visual.

En cuanto al valor promedio que desea, tengo un método, tal vez pueda consultarlo. Cree columnas calculadas como estas:

average seconds = AVERAGE('Table'[total seconds])

Duration average  = 
VAR Duration = 'Table'[average seconds]
VAR Hours =INT ( Duration / 3600)
VAR Minutes =INT ( MOD( Duration - ( Hours * 3600 ),3600 ) / 60)
VAR Seconds =ROUNDUP(MOD ( MOD( Duration - ( Hours * 3600 ),3600 ), 60 ),0) 
VAR H =IF ( LEN ( Hours ) = 1, 
        CONCATENATE ( "0", Hours ),
        CONCATENATE ( "", Hours ))
VAR M =IF (
        LEN ( Minutes ) = 1,
        CONCATENATE ( "0", Minutes ),
        CONCATENATE ( "", Minutes ))
VAR S =IF (
        LEN ( Seconds ) = 1,
        CONCATENATE ( "0", Seconds ),
        CONCATENATE ( "", Seconds ))
RETURN
    CONCATENATE (H,CONCATENATE ( ":", CONCATENATE ( M, CONCATENATE ( ":", S ) ) ) )

Y el resultado es el que se muestra:

Ailsamsft_0-1623919286283.png

No puede agregar directamente la columna de duración original directamente a la tarjeta, porque no puede calcular directamente el valor promedio. Puede calcular el valor medio de ‘Tabla'[total seconds] primero, luego convierta el valor promedio y agregue el valor convertido a la tarjeta.

He adjuntado mi archivo pbix, puede consultarlo.

Atentamente

Equipo de apoyo de la comunidad _ Ailsa Tao

c-iakovidou

En respuesta a Ailsa-msft

Muchas gracias por tu respuesta pero lamentablemente no resuelve mi problema. Necesito que la vista final de la tarjeta sea interactiva con los filtros que tengo (por ejemplo, año, trimestre, etc.)

Hola @ c-iakovidou

Usé los datos que proporcionó para crear una medida que puede convertir un número entero en una duración.

Duration =
VAR Duration = SELECTEDVALUE('Table'[total seconds])
VAR Hours =
    INT ( Duration / 3600)
VAR Minutes =
    INT ( MOD( Duration - ( Hours * 3600 ),3600 ) / 60)
VAR Seconds =
    ROUNDUP(MOD ( MOD( Duration - ( Hours * 3600 ),3600 ), 60 ),0)
VAR H =
    IF ( LEN ( Hours ) = 1,
        CONCATENATE ( "0", Hours ),
        CONCATENATE ( "", Hours )
      )
VAR M =
    IF (
        LEN ( Minutes ) = 1,
        CONCATENATE ( "0", Minutes ),
        CONCATENATE ( "", Minutes )
    )
VAR S =
    IF (
        LEN ( Seconds ) = 1,
        CONCATENATE ( "0", Seconds ),
        CONCATENATE ( "", Seconds )
    )
RETURN
    CONCATENATE (
        H,CONCATENATE ( ":", CONCATENATE ( M, CONCATENATE ( ":", S ) ) )
    )

El efecto es como se muestra:

Ailsa-msft_0-1623308993911.png

Pero con respecto a la duración media que dijiste, tengo un pequeño problema. Porque la unidad de datos que proporciona está en el segundo nivel. Si el promedio final tiene un punto decimal, ¿qué se debe hacer? Actualmente no hay forma de convertir directamente un valor con un punto decimal en una duración.

He adjuntado mi archivo pbix, puede consultarlo.

Atentamente

Equipo de apoyo de la comunidad _ Ailsa Tao

Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los demás miembros a encontrarla más rápidamente.

c-iakovidou

En respuesta a Ailsa-msft

El formato que se muestra arriba es absolutamente perfecto, pero todavía tengo el problema con la duración promedio. Necesito tener en la pestaña de informes una tarjeta que muestre la duración promedio en este formato: dd: hh: mm: ss

En respuesta a c-iakovidou

Hola @ c-iakovidou

¿Cómo lidiar con el número después del punto decimal? ¿El redondeo se refleja directamente en forma de números enteros?

Por ejemplo :

El promedio final es 100,12, el resultado devuelto es 100 y la visualización en formato de duración es 00:01:40.

¿Es este el resultado que desea?

c-iakovidou

En respuesta a Ailsa-msft

Hola de nuevo Ailsa,

Hice lo que mencionaste anteriormente y llegué a esto

duración.PNG

informe de duración.PNG

Como ve en la pestaña de datos, todo se ve muy bien, pero en la pestaña de informe esto es lo que obtengo

DataInsights

@ c-iakovidou,

En Power Query, cree una columna personalizada de la siguiente manera:

#duration(0, 0, 0, [Total seconds])

DataInsights_0-1623162066223.png

Si prefiere DAX, consulte el enlace a continuación:

https://community.powerbi.com/t5/Community-Blog/Aggregating-Duration-Time/ba-p/22486

c-iakovidou

En respuesta a DataInsights

¡Muchas gracias por tu respuesta! Ya probé esto, pero desafortunadamente no pude mostrar la duración promedio para tenerlo como una tarjeta en la pestaña de informe.

Tienes alguna idea ?

DataInsights

En respuesta a c-iakovidou

@ c-iakovidou,

Probaría la solución DAX (enlace en mi mensaje anterior). En esta solución, la medida [Duration in Seconds] sería su medida que calcula la duración media.

VAR Duration = [Duration in Seconds]

Deja un comentario

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