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

Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started

Reply
slewis
Helper I
Helper I

Cómo sumar por mes por un promedio por persona

slewis_1-1600289705246.png

Tengo tipos de hojas enumeradas en filas. Una fila por mes, por persona por tipo de licencia. El cálculo se basa en la disponibilidad de una persona. La disponibilidad por persona se establece en la diferencia entre el número de tiempo en un mes (173) menos la cantidad de vacaciones que pasaron en ese mes (por ejemplo, 173 - 6 días de vacaciones sería 167 de disponibilidad para ese mes).
La disponibilidad mensual debe ser el SUM(of the invididual's availability) - la suma de sus tipos de licencia no vacaciones.

Por ejemplo, en febrero, James tomó 4 días de vacaciones, lo que lo lleva a una posible disponibilidad de 169.

Necesito una forma de sumar la disponibilidad de todas las personas en un mes mientras tengo 2 registros por persona, con cada registro tiene el mismo valor (por ejemplo, 173, 169, etc.). No puedo usar el promedio porque entonces el mes terminará como un promedio de todos los registros; que es lo que no quiero.

1 ACCEPTED SOLUTION
DataZoe
Employee
Employee

@slewis Creo que el problema es que desea agregarlo de manera diferente dependiendo del ámbito. Puede hacerlo mediante la instrucción dax de ISINSCOPE:

https://docs.microsoft.com/en-us/dax/isinscope-function-dax#syntax

DataZoe_0-1600305397111.png

Difference = sumx('Table','Table'[Availability]-'Table'[Total])


Difference ISINSCOPE =
switch(
    true(),
    isblank( SELECTEDVALUE( 'Table'[Month] ) ),
    sumx(
        values( 'Table'[Month] ),
        sumx(
            values( 'Table'[Person] ),
            CALCULATE( minx( values( 'Table'[Leave Type] ), [Difference] ) )
        )
    ),
    isinscope( 'Table'[Month] ),
    sumx(
        values( 'Table'[Person] ),
        CALCULATE( minx( values( 'Table'[Leave Type] ), [Difference] ) )
    ),
    ISINSCOPE( 'Table'[Person] ),
    minx( values( 'Table'[Leave Type] ), [Difference] ),
    [Difference]
)

Lo que esto hace es una serie de comprobaciones y, a continuación, proporcionar una agregación diferente:

  1. ¿Hay varios meses? --> a continuación, se agregaron valores para cada mes,que son los valores añadidos para cada persona,que es el mínimo de la diferencia de tipo de licencia entre disponible y total.
  2. ¿Está en el ámbito de un solo mes? --> a continuación, se han añadido valores para cada persona,que es el mínimo de la diferencia de tipo de licencia entre disponible y total.
  3. ¿Está en el ámbito de una sola persona? --> entonces dar el mínimo del tipo de licencia diferencia entre available y total.
  4. De lo contrario, dé la diferencia entre el archivo disponible y el total.

Respectfully,
Zoe Douglas (DataZoe)



Follow me on LinkedIn at https://www.linkedin.com/in/zoedouglas-data
See my reports and blog at https://www.datazoepowerbi.com/

View solution in original post

4 REPLIES 4
slewis
Helper I
Helper I

IsInScope era demasiado difícil de usar y, al parecer, muy intensivo en computación. Usé Summerize en su lugar.

Eso es impresionante @slewis ! ¿Puedes compartir lo que hiciste para que pueda ayudar a otra persona que también tiene este problema?

Respectfully,
Zoe Douglas (DataZoe)



Follow me on LinkedIn at https://www.linkedin.com/in/zoedouglas-data
See my reports and blog at https://www.datazoepowerbi.com/

DataZoe
Employee
Employee

@slewis Creo que el problema es que desea agregarlo de manera diferente dependiendo del ámbito. Puede hacerlo mediante la instrucción dax de ISINSCOPE:

https://docs.microsoft.com/en-us/dax/isinscope-function-dax#syntax

DataZoe_0-1600305397111.png

Difference = sumx('Table','Table'[Availability]-'Table'[Total])


Difference ISINSCOPE =
switch(
    true(),
    isblank( SELECTEDVALUE( 'Table'[Month] ) ),
    sumx(
        values( 'Table'[Month] ),
        sumx(
            values( 'Table'[Person] ),
            CALCULATE( minx( values( 'Table'[Leave Type] ), [Difference] ) )
        )
    ),
    isinscope( 'Table'[Month] ),
    sumx(
        values( 'Table'[Person] ),
        CALCULATE( minx( values( 'Table'[Leave Type] ), [Difference] ) )
    ),
    ISINSCOPE( 'Table'[Person] ),
    minx( values( 'Table'[Leave Type] ), [Difference] ),
    [Difference]
)

Lo que esto hace es una serie de comprobaciones y, a continuación, proporcionar una agregación diferente:

  1. ¿Hay varios meses? --> a continuación, se agregaron valores para cada mes,que son los valores añadidos para cada persona,que es el mínimo de la diferencia de tipo de licencia entre disponible y total.
  2. ¿Está en el ámbito de un solo mes? --> a continuación, se han añadido valores para cada persona,que es el mínimo de la diferencia de tipo de licencia entre disponible y total.
  3. ¿Está en el ámbito de una sola persona? --> entonces dar el mínimo del tipo de licencia diferencia entre available y total.
  4. De lo contrario, dé la diferencia entre el archivo disponible y el total.

Respectfully,
Zoe Douglas (DataZoe)



Follow me on LinkedIn at https://www.linkedin.com/in/zoedouglas-data
See my reports and blog at https://www.datazoepowerbi.com/

amitchandak
Super User
Super User

@slewis ,¿Puede compartir datos de ejemplo y salida de ejemplo en formato de tabla? O una muestra de pbix después de eliminar datos confidenciales.

Helpful resources

Announcements
Europe Fabric Conference

Europe’s largest Microsoft Fabric Community Conference

Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.

Power BI Carousel June 2024

Power BI Monthly Update - June 2024

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

RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

Top Solution Authors