Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started
Querida comunidad,
Tengo problemas para calcular el % total visual del esfuerzo de trabajo para el período anterior utilizando DATEADD.
Tengo algunos datos que muestran cuánto tiempo se dedica a cada actividad laboral ('Workdetails') Si la actividad laboral ha durado varios días, las horas se distribuyen uniformemente para las fechas ('Work effort distributed (h)').
El requisito es comparar el esfuerzo de trabajo del período actual y el período anterior. Los datos deben ser slicables y aún así mostrar el 100% en la imagen para cualquier período de tiempo seleccionado / selecciones de segmentación de datos.
Tengo el siguiente tipo de datos:
Año | Cuarto | Mes | Día | Workid | País | PL | Detalles de trabajo | Fecha de inicio | Fecha de finalización | DistributedDates | Effort_Hours+Minutos | Esfuerzo de trabajo distribuido (h) |
2021 | Qtr 4 | Octubre | 27 | 1 | Emiratos Árabes Unidos | SAAB | Socios de formación | 27.10.2021 0:00 | 27.10.2021 0:00 | 27.10.2021 0:00 | 4 | 4 |
2021 | Qtr 4 | Diciembre | 12 | 2 | Samoa Americana | EQUIPO | Desarrollo personal | 12.12.2021 0:00 | 14.12.2021 0:00 | 12.12.2021 0:00 | 26 | 8.666666666666666 |
2021 | Qtr 4 | Diciembre | 13 | 2 | Samoa Americana | EQUIPO | Desarrollo personal | 12.12.2021 0:00 | 14.12.2021 0:00 | 13.12.2021 0:00 | 26 | 8.666666666666666 |
2021 | Qtr 4 | Diciembre | 14 | 2 | Samoa Americana | EQUIPO | Desarrollo personal | 12.12.2021 0:00 | 14.12.2021 0:00 | 14.12.2021 0:00 | 26 | 8.666666666666666 |
2021 | Qtr 4 | Diciembre | 20 | 3 | Bélgica | SAAB | Apoyo al proyecto | 20.12.2021 0:00 | 20.12.2021 0:00 | 20.12.2021 0:00 | 1 | 1 |
2021 | Qtr 4 | Diciembre | 20 | 4 | Luxemburgo | MASI | Formación / oficina | 20.12.2021 0:00 | 20.12.2021 0:00 | 20.12.2021 0:00 | 4 | 4 |
2021 | Qtr 4 | Diciembre | 20 | 5 | Bélgica | SAAB | Formación / remoto | 20.12.2021 0:00 | 20.12.2021 0:00 | 20.12.2021 0:00 | 2 | 2 |
2021 | Qtr 4 | Diciembre | 20 | 6 | Bélgica | SAAB | Demo / in situ | 20.12.2021 0:00 | 20.12.2021 0:00 | 20.12.2021 0:00 | 1 | 1 |
2022 | Qtr 1 | Enero | 4 | 7 | Lituania | MASI | Soporte para socios | 4.1.2022 0:00 | 4.1.2022 0:00 | 4.1.2022 0:00 | 1 | 1 |
También tengo una tabla de calendario personalizada ('Fecha') vinculada a mi tabla de datos ('DistiributedDates').
Estoy tratando de mostrar cómo el esfuerzo de trabajo (en %) difiere entre los períodos actuales y anteriores (Año, Trimestre, Mes, Día).
Este gráfico de barras a continuación es básicamente la visualización a la que aspiro, pero en lugar de mostrar el porcentaje de gran esfuerzo total de trabajo (de todos los datos), las barras deben mostrar el total visual, es decir, reaccionar a las segmentaciones de datos en la página y aún así proporcionar el 100%:
La cantidad de esfuerzo de trabajo que estoy usando como base está en la columna: 'Esfuerzo de trabajo distribuido (h)'
El gran total de trabajo de la ayuda se encuentra en la medida denominada 'EffortInHoursTotal':
EffortInHoursTotal =
CALCULATE(
SUM('demodata'[Work effort distributed (h)]),
REMOVEFILTERS('demodata')
)
Tengo una medida que calcula el % de esfuerzo de trabajo
Effort (%) =
DIVIDE(
sum('demodata'[Work effort distributed (h)]),
[EffortInHoursTotal])
Luego tengo una medida que utiliza la medida anterior y calcula el esfuerzo de trabajo del período anterior .
Utiliza una solución dinámica de selección de período de tiempo que encontré en algún blog / video.
Previous Period Effort % =
SWITCH(
TRUE(),
ISINSCOPE('Calendar'[Date].[Day]),
CALCULATE(
[Effort (%)],
DATEADD('Calendar'[Date].[Date], -1, DAY)
),
ISINSCOPE('Calendar'[Date].[Month]),
CALCULATE(
[Effort (%)],
DATEADD('Calendar'[Date].[Date], -1, MONTH)
),
ISINSCOPE('Calendar'[Date].[Quarter]),
CALCULATE(
[Effort (%)],
DATEADD('Calendar'[Date].[Date], -1, QUARTER)
),
ISINSCOPE('Calendar'[Date].[Year]),
CALCULATE(
[Effort (%)],
DATEADD('Calendar'[Date].[Date], -1, YEAR)
)
)
Por lo que entiendo, estos cálculos básicos de % parecen funcionar bien (y en realidad se usan en el gráfico de barras anterior).
Pero como se ha dicho, no debo visualizar estos sino "visual total %'.
Entonces, a continuación he creado una medida para calcular el %total visual:
Effort % ALLSELECTED =
DIVIDE(
[Effort (%)],
CALCULATE(
[Effort (%)],
ALLSELECTED( demodata )
))
No estoy seguro de si es perfecto, pero puedo mostrar esto en lo visual y reacciona a las cortadoras, mostrando todo el tiempo en total al 100%.
La medida que simplemente no puedo crear es mostrar el % total visual del período anterior.
Este intento muestra barras 100% para todos los períodos:
Previous Period Effort % ALLSELECTED =
SWITCH(
TRUE(),
ISINSCOPE('Calendar'[Date].[Day]),
CALCULATE(
[Effort % ALLSELECTED],
DATEADD('Calendar'[Date].[Date], -1, DAY)
),
ISINSCOPE('Calendar'[Date].[Month]),
CALCULATE(
[Effort % ALLSELECTED],
DATEADD('Calendar'[Date].[Date], -1, MONTH)
),
ISINSCOPE('Calendar'[Date].[Quarter]),
CALCULATE(
[Effort % ALLSELECTED],
DATEADD('Calendar'[Date].[Date], -1, QUARTER)
),
ISINSCOPE('Calendar'[Date].[Year]),
CALCULATE(
[Effort % ALLSELECTED],
DATEADD('Calendar'[Date].[Date],-1, YEAR)
)
)
También intenté usar el cálculo del % de esfuerzo en VAR, pero esto ignora DATEADD:
Previous Period Effort % ALLSELECTED VAR =
VAR _selectedDistribution =
[Effort (%)]/
CALCULATE(
[Effort (%)],
ALLSELECTED( demodata )
)
RETURN
SWITCH(
TRUE(),
ISINSCOPE('Calendar'[Date].[Day]),
CALCULATE(
_selectedDistribution,
DATEADD('Calendar'[Date], -1, DAY)
),
ISINSCOPE('Calendar'[Date].[Month]),
CALCULATE(
_selectedDistribution ,
DATEADD('Calendar'[Date], -1, MONTH)
),
ISINSCOPE('Calendar'[Date].[Quarter]),
CALCULATE(
_selectedDistribution,
DATEADD('Calendar'[Date], -1, QUARTER)
),
ISINSCOPE('Calendar'[Date].[Year]),
CALCULATE(
_selectedDistribution,
DATEADD('Calendar'[Date],-1, YEAR)
)
)
Probablemente sea un problema de contexto, pero no entiendo qué y cómo solucionarlo.
Aquí hay una tabla con todas las medidas anteriores:
Espero que hayas entendido lo que estoy tratando de hacer aquí.
Realmente apreciaría su experiencia porque he estado luchando con esto un tiempo de looong ...
BR
Minna
pbix: Demo.pbix
https://www.dropbox.com/s/lj80e3wja9o5yhm/Demo.pbix?dl=0
Solved! Go to Solution.
De acuerdo con su muestra, puede ver, hay un valor total de Esfuerzo (%), pero no hay un valor total de Effor% del período anterior, es por eso que no puede usar directamente la fórmula a continuación como Esfuerzo % ALLSELECTED.
Previous Period Effort % ALLSELECTED=
DIVIDE([Previous Period Effort %],CALCULATE([Previous Period Effort %],ALLSELECTED(demodata)))
En cuanto a por qué no hay un valor total de Effor% del período anterior, porque la función ISINSCOPE en su fórmula, no hay una fecha en la fila total, por lo que se muestra en blanco.
Aquí está mi solución.
Previous Period Effort % =
SWITCH(
TRUE(),
ISINSCOPE('Calendar'[Date].[Day])||[Effort % ALLSELECTED]=1,
CALCULATE(
[Effort (%)],
DATEADD('Calendar'[Date].[Date], -1, DAY))
,
ISINSCOPE('Calendar'[Date].[Month])||[Effort % ALLSELECTED]=1,
CALCULATE(
[Effort (%)],
DATEADD('Calendar'[Date].[Date], -1, MONTH)
),
ISINSCOPE('Calendar'[Date].[Quarter])||[Effort % ALLSELECTED]=1,
CALCULATE(
[Effort (%)],
DATEADD('Calendar'[Date].[Date], -1, QUARTER)
),
ISINSCOPE('Calendar'[Date].[Year])||[Effort % ALLSELECTED]=1,
CALCULATE(
[Effort (%)],
DATEADD('Calendar'[Date].[Date], -1, YEAR))
)
Previous Period Effort % ALLSELECTED=
DIVIDE([Previous Period Effort %],CALCULATE([Previous Period Effort %],ALLSELECTED(demodata)))
Obtén el resultado.
Adjunto mi muestra a continuación como referencia.
Saludos
Equipo de apoyo a la comunidad _ kalyj
Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.
De acuerdo con su muestra, puede ver, hay un valor total de Esfuerzo (%), pero no hay un valor total de Effor% del período anterior, es por eso que no puede usar directamente la fórmula a continuación como Esfuerzo % ALLSELECTED.
Previous Period Effort % ALLSELECTED=
DIVIDE([Previous Period Effort %],CALCULATE([Previous Period Effort %],ALLSELECTED(demodata)))
En cuanto a por qué no hay un valor total de Effor% del período anterior, porque la función ISINSCOPE en su fórmula, no hay una fecha en la fila total, por lo que se muestra en blanco.
Aquí está mi solución.
Previous Period Effort % =
SWITCH(
TRUE(),
ISINSCOPE('Calendar'[Date].[Day])||[Effort % ALLSELECTED]=1,
CALCULATE(
[Effort (%)],
DATEADD('Calendar'[Date].[Date], -1, DAY))
,
ISINSCOPE('Calendar'[Date].[Month])||[Effort % ALLSELECTED]=1,
CALCULATE(
[Effort (%)],
DATEADD('Calendar'[Date].[Date], -1, MONTH)
),
ISINSCOPE('Calendar'[Date].[Quarter])||[Effort % ALLSELECTED]=1,
CALCULATE(
[Effort (%)],
DATEADD('Calendar'[Date].[Date], -1, QUARTER)
),
ISINSCOPE('Calendar'[Date].[Year])||[Effort % ALLSELECTED]=1,
CALCULATE(
[Effort (%)],
DATEADD('Calendar'[Date].[Date], -1, YEAR))
)
Previous Period Effort % ALLSELECTED=
DIVIDE([Previous Period Effort %],CALCULATE([Previous Period Effort %],ALLSELECTED(demodata)))
Obtén el resultado.
Adjunto mi muestra a continuación como referencia.
Saludos
Equipo de apoyo a la comunidad _ kalyj
Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.
Hola @v-kalyj-msft
Oh, qué solución tan inteligente, no habría descubierto esto yo mismo, ¡nunca!
¡Muchas gracias, eres brillante! 🙂
BR
Minna
Check out the September 2024 Power BI update to learn about new features.
Learn from experts, get hands-on experience, and win awesome prizes.
User | Count |
---|---|
2 | |
2 | |
1 | |
1 | |
1 |