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
Maussie94
Regular Visitor

Medir para visualizar la cantidad promedio a través del tiempo

Hola a todos

Me estoy encontrando con un problema con la creación de una medida basada en dos tablas. Cualquier ayuda que se pueda proporcionar será muy apreciada. Para la visualización que quiero crear estoy usando tres tablas:

  • Una tabla de calendario
  • Una tabla de acuerdos: mostrando por ID de contrato los importes acordados en un período determinado (fecha de inicio y finalización)
  • Una tabla usada que muestra los importes que se utilizaron realmente para los de esos ID de contrato en un período determinado

Acuerdos de mesa
Id. de contratoFecha de inicioFecha de finalizaciónCantidad
11-12-201930-6-202060
21-2-202015-6-202045

Tabla utilizada
Id. de contratoFecha de inicioFecha de finalizaciónCantidad
11-12-201931-12-20195
11-1-202031-1-20203
11-2-202029-2-20207
11-3-202031-3-20209
11-4-202030-4-20204
11-5-202031-5-20203
11-6-202030-6-20208
21-2-202029-2-20206
21-3-202031-3-20209
21-4-202030-4-202012
21-5-202031-5-20208
21-6-202015-6-20203

El problema que estoy teniendo es mostrar los montos en la tabla de acuerdos a través del tiempo. Por ejemplo, el ID de contrato 2 tiene una duración de 4,5 meses (o 135 días), por lo que, en principio, el acuerdo establece que hay (45/4,5) 10 importes al mes. Así que o la duración del contrato en días se puede dividir por la cantidad por los días que hay en ese mes en particular es la ecuación que necesito usar o hay una mejor manera de obtener este número que no estoy pensando.

Esa cantidad se puede comparar entonces lo que realmente se está utilizando. Así que el resultado final tiene que verse algo como esto:

IdAcuerdoUtilizadoAcuerdoUtilizadoAcuerdoUtilizadoAcuerdoUtilizadoAcuerdoUtilizadoAcuerdoUtilizadoAcuerdoUtilizado
18,558,538,578,598,548,538,58
2 106109101210853
dec-19dec-19jan-20jan-20feb-20feb-20mrt-20mrt-20apr-20apr-2020 de mayo20 de mayojun-20jun-20

La parte utilizada es fácil, ya que hay una relación entre el calendario y la fecha de finalización (ya que la fecha de finalización de la tabla utilizada siempre estará dentro del mes). Pero el acuerdo en cantidades que no puedo hacer funcionar. He intentado lo siguiente, pero obtengo errores como la fecha de inicio y la fecha de finalización tanto en datediff como en la función de filtro no se reconocen:

Acordado por mes: Calcular( Suma( 'Acuerdos de tabla'[Importe]) / DateDiff( 'Acuerdos de tabla'[Fecha de inicio], 'Acuerdos de tabla'[Fecha de finalización], Día) * Countrows('Calendario') ), Filtro( 'Acuerdos de tabla'[Fecha de inicio] <' 'Calendario'[Fecha] && 'Calendario'<])

Tenga en cuenta que en este momento no hay ninguna relación entre la tabla acordada y el calendario.

Solo la tabla acordada con la tabla utilizada basada en el ID.

Y la tabla Usada con Calendario basada en la fecha de finalización y la fecha respectivamente.

Realmente espero que alguien pueda proporcionar alguna idea, y como dije anteriormente, cualquier ayuda será muy apreciada.

Gracias, Maurice

3 REPLIES 3
v-lionel-msft
Community Support
Community Support

Hola @Maussie94 ,

¿Así?

v-lionel-msft_0-1596788641619.png

No entiendo muy bien tu lógica de cálculo.

¿Podrías saber cómo se calculan los valores de Agree-8.5 y Agree-10?

Saludos
Lionel Chen

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

MFelix
Super User
Super User

Hola @Maussie94 ,

Pruebe el siguiente código:

Month Amount =
VAR start_date =
    MAX ( Agreements[Start date] )
VAR end_date =
    MAX ( Agreements[End date] )
VAR Total_Value =
    CALCULATE (
        SUM ( Agreements[Amount] ) / DATEDIFF ( start_date, end_date, DAY )
            * DATEDIFF (
                MAXX (
                    UNION ( ROW ( "date", start_date ), ROW ( "date", MIN ( 'Calendar'[Date] ) ) ),
                    [date]
                ),
                MINX (
                    UNION ( ROW ( "date", end_date ), ROW ( "date", MAX ( 'Calendar'[Date] ) ) ),
                    [date]
                ),
                DAY
            )
    ) --, FILTER(Agreements, Agreements[Start date]<= MIN('Calendar'[Date]) && Agreements[End date]>=Max('Calendar'[Date])))
RETURN
    IF ( Total_Value > 0, Total_Value )

Regards

Miguel Félix


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog: Power BI em Português



Hola @MFelix ,

No estoy seguro de cómo, pero de hecho funciona ahora. La primera vez que lo probé en un archivo nuevo, pero recibí un error que indica que el ID y los nombres de mes no estaban relacionados. Lo intentó de nuevo en otro archivo y ahora todo funciona. Si aún así sigue 😅s teniendo problemas,visita la página de ayuda de Safari. Muchas gracias

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.