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
ryan25r9
Helper I
Helper I

Medir eficiencia -- Obtener valores distintos, promedio por fecha única, luego sumar los promedios

Hola a todos,

Estoy tratando de encontrar una manera de refactorizar esta medida para hacerla más eficiente, ya que actualmente es bastante lenta. He estado girando mis ruedas, así que cualquier ayuda es muy apreciada.

Necesitamos obtener valores distintos por empleado y fecha porque la tabla TLG también tiene un nivel de línea más granular, y los días laborables son solo para el empleado y la fecha trabajada.

La idea general aquí es que dos empleados diferentes pueden tener un día de trabajo diferente por fecha, porque uno podría estar en un país que tiene diferentes días festivos o fines de semana del otro. Así que con el fin de obtener el total real de días de trabajo para "Horas por día" denominadores, etc, necesito encontrar días de trabajo promedio para cada fecha.

EVALUATE

VAR DistinctEmpDays = 

  SUMMARIZE(
          TLG
                , TLG[Date Worked], TLG[Employee ID], TLG[Workday Days]
        )
        
VAR AvgDays = /* Average workdays per single day */

        GROUPBY(
          DistinctEmpDays
                , [Date Worked]
                , "AvgWorkdays"
                , AVERAGEX( CURRENTGROUP(), [Workday Days] ) 
        )
        
VAR Total = /* Sum daily avg for total workdays */

  SUMX( AvgDays, [AvgWorkdays] )
                
RETURN  
  ROW("Test", Total)

8 REPLIES 8
v-lionel-msft
Community Support
Community Support

Hola @ryan25r9 ,

¿O así?

Measure = 
VAR x = 
AVERAGEX(
    FILTER(
        TLG,
        TLG[Date Worked] = SELECTEDVALUE(TLG[Date Worked])
    ),
    TLG[Workday Days]
)
RETURN
ROW(
    "Test",
    SUMX(
        TLG,
        x
    )
)

Saludos
Lionel Chen

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

Lo siento, esto tampoco llega del todo. No tiene en cuenta que hay TLG duplicado[Días laborables] por fecha de trabajo y empleado.

Probablemente ayuda a dar un ejemplo. Conjunto de datos inicial:

ID del empleadoFecha de trabajoDías laborablesTLP ID
49101/05/20010
49101/06/200.54
49101/06/200.5941
49101/07/201331
49101/08/201596
49101/08/2012537
1140201/06/201319
1140201/06/201782
1140201/07/201331
1140201/08/201841
9982101/05/20010
9982101/06/201319
9982101/07/2012537
9982101/07/201596
9982101/07/201941
272901/05/201331
272901/05/2011931
272901/06/200.5841

Valores distintos de ID de empleado, fecha de trabajo y días laborables:

ID del empleadoFecha de trabajoDías laborables
49101/05/200
49101/06/200.5
49101/07/201
49101/08/201
1140201/06/201
1140201/07/201
1140201/08/201
9982101/05/200
9982101/06/201
9982101/07/201
272901/05/201
272901/06/200.5

PROMEDIO Días laborables por día:

Fecha de trabajoDías promedio de día laborable
01/05/200.333
01/06/200.750
01/07/201.000
01/08/201.000

Por último, la SUMA de los promedios, haciendo el resultado esperado de la medida aquí:

3.083

Hola

Puede descargar mi archivo PBI desde aquí.

Espero que esto ayude.

Untitled.png


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/

Apreciamos enormemente el archivo Power BI, muchas gracias. Esto realmente devuelve los resultados correctos, pero ejecutar en todo el modelo reduce la eficiencia de 25 segundos a 171 segundos. La tabla principal (TLG) es de 700 filas, por lo que ciertamente no está ayudando con la transición de contexto. Como referencia, se simplifica el código antiguo y se modifica el código recomendado para que se ejecute en DAX Studio:

EVALUATE

VAR Old =  
  SUMX(
    GROUPBY(
      SUMMARIZE(TLG, TLG[Date Worked], TLG[Employee ID], TLG[Workday Days])
      , [Date Worked]
      , "AvgWorkdays"
      , AVERAGEX( CURRENTGROUP(), [Workday Days] ) 
    )
    , [AvgWorkdays]
  )

VAR New =
  SUMX (
       VALUES ( 'TLG'[Date Worked] ),
       AVERAGEX (
            SUMMARIZE (
                 VALUES ( TLG[Employee ID] ),
                 [Employee ID],
                 "AvgWorkdays", CALCULATE(AVERAGE(TLG[Workday Days]))
            ),
           [AvgWorkdays]
       )
  )

RETURN
 ROW("test", New)

Gracias por proporcionar datos de muestra y salida. Esta medida debe funcionar para usted en una tabla con Fechas en las filas.

NewMeasure ?
VAR __summary
ADDCOLUMNS (
RESUMEN ( TLG, TLG[Employee ID], TLG[Date Worked] ),
"AvgHrs", CALCULATE ( AVERAGE ( TLG[Workday Days] )
)
devolución
AVERAGEX ( __summary, [AvgHrs] )

Si esto funciona para usted, por favor márquelo como solución. Los felicitaciones también son apreciados. Por favor, avísame si no.

saludos

palmadita





Did I answer your question? Mark my post as a solution! Kudos are also appreciated!

To learn more about Power BI, follow me on Twitter or subscribe on YouTube.


@mahoneypa HoosierBI on YouTube


Apreciamos mucho la respuesta! Desafortunadamente, esta medida está en un modelo tabular SSAS, por lo que necesito que funcione en todos los contextos y no se puede limitar a una tabla con fechas en las filas.

mahoneypat
Employee
Employee

Por favor, pruebe esta medida en su lugar.

NewMeasure á Sumx(Values(TLG[Date]), calculate(average(TLG[Workday Days])))

Si esto funciona para usted, por favor márquelo como la solución. Los felicitaciones también son apreciados. Por favor, avísame si no.

saludos

palmadita





Did I answer your question? Mark my post as a solution! Kudos are also appreciated!

To learn more about Power BI, follow me on Twitter or subscribe on YouTube.


@mahoneypa HoosierBI on YouTube


Gracias, pero esto no funcionará. No cambia la granularidad a Empleado y Fecha trabajado, por lo que está agregando millones de duplicados.

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.