Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and a 50 percent discount on exams.
Get startedEarn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
Hola, chicos
Hice una medida para usar como filtro en la parte superior de un visible para ver solo los empleados que están en servicio en función de una fecha de entrada específica.
Por lo tanto, la fecha de entrada 10/1/2019 solo debe ver a los Empleados en servicio en esa fecha específica.
Archivo que incluye todo:
Con la siguiente medida funciona cuando EmployeeID es el registro único, cuando establecí la medida como filtro igual a 1 en la tabla visual. Desafortunadamente, mi EmployeeID no es único en la tabla: si los nombres de los empleados cambian, obtienen un nuevo registro con un nuevo BeginDate y EndDate. De alguna manera esto crea problemas para poder ver los datos correctos. Abajo tengo 'Empleado6' que tiene 3 registros, y la medida a continuación no cuenta un '1' para el tercer registro de 'Empleado6'.
PeriodFilter =
var _Begin = min(Employees[BeginDate])
var _End = min(Employees[EndDate])
return
if(
( _Begin <= min('Calendar'[Date]) && _Begin <= max('Calendar'[Date]))
&& ( _End >= min('Calendar'[Date]) && _End >= max('Calendar'[Date]))
,1,0
)
Datos de muestra:
| Employee | BeginDate | EndDate |
|------------|------------|------------|
| Employee1 | 1/30/2020 | 1/3/2021 |
| Employee2 | 9/20/2021 | 1/1/2022 |
| Employee3 | 1/3/2021 | 5/29/2021 |
| Employee4 | 7/5/2021 | 9/20/2021 |
| Employee5 | 11/10/2020 | 7/5/2021 |
| Employee6 | 1/30/2020 | 1/3/2021 |
| Employee6 | 1/4/2021 | 8/1/2021 |
| Employee6 | 8/2/2021 | 12/31/2099 |
| Employee7 | 7/5/2021 | 9/20/2021 |
| Employee8 | 1/5/2015 | 7/5/2021 |
| Employee9 | 9/20/2021 | 12/31/2099 |
| Employee10 | 1/1/2021 | 12/31/2099 |
| Employee11 | 9/8/2017 | 1/3/2021 |
| Employee12 | 1/3/2021 | 9/20/2021 |
| Employee13 | 7/5/2021 | 12/31/2099 |
| Employee14 | 1/5/2015 | 11/10/2020 |
| Employee15 | 1/30/2020 | 9/20/2021 |
| Employee16 | 1/1/2021 | 12/31/2099 |
| Employee17 | 1/5/2015 | 1/3/2021 |
| Employee18 | 9/20/2021 | 12/31/2099 |
| Employee19 | 1/3/2021 | 12/31/2099 |
| Employee20 | 11/10/2020 | 12/31/2099 |
De alguna manera muestra el resultado correcto cuando también arrastro los campos 'BeginDate' y 'EndDate' en la tabla. Pero no quiero incluir esos campos en la tabla. Debido a que funciona con esos campos, comencé a pensar que podría necesitar una función SUMX en su lugar, que evalúa cada registro en la tabla y me devuelve el '1' para el 3er registro de Employee6, usando la siguiente medida:
PeriodFilter_SUMX =
var _Begin = min(Employees[BeginDate])
var _End = min(Employees[EndDate])
return
SUMX(
Employees,
if(
( _Begin <= min('Calendar'[Date]) && _Begin <= max('Calendar'[Date])) && ( _End >= min('Calendar'[Date]) && _End >= max('Calendar'[Date]))
,1,0
)
)
Esto tampoco funciona, aparte de que da un número total más alto cuando los campos Fecha se incluyen en la tabla.
¿Cómo puedo eludir este problema dentro de una medida? ¿Alguna sugerencia?
Solved! Go to Solution.
Pruebe esta expresión de medida en su lugar.
PeriodFilterNew =
VAR MinDate =
MIN ( 'Calendario'[Fecha] )
VAR MaxDate =
MAX ( 'Calendario'[Fecha] )
Resultado VAR =
CUENTAS (
FILTRO (
Empleados
Empleados[BeginDate] <= MaxDate
&& Empleados[EndDate] >= MinDate
)
)
DEVOLUCIÓN
IF ( Resultado > 0, 1, 0 )
Palmadita
Funciona perfecto, gracias! Aunque realmente no entiendo por qué funciona esto, y mi código no.
Pruebe esta expresión de medida en su lugar.
PeriodFilterNew =
VAR MinDate =
MIN ( 'Calendario'[Fecha] )
VAR MaxDate =
MAX ( 'Calendario'[Fecha] )
Resultado VAR =
CUENTAS (
FILTRO (
Empleados
Empleados[BeginDate] <= MaxDate
&& Empleados[EndDate] >= MinDate
)
)
DEVOLUCIÓN
IF ( Resultado > 0, 1, 0 )
Palmadita