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.
Ailsa-msft
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:
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
Ailsa-msft
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:
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.)
Ailsa-msft
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:
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
Ailsa-msft
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
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])
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]