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
Syndicate_Admin
Administrator
Administrator

DAX: Basado en la medida de filtro, sin comprender cómo usar el contexto correcto (. PBIXincluded)

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:

. Archivo PBIX

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?

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

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 )

mahoneypat_0-1633089546880.png

Palmadita

View solution in original post

2 REPLIES 2
Syndicate_Admin
Administrator
Administrator

Funciona perfecto, gracias! Aunque realmente no entiendo por qué funciona esto, y mi código no.

Syndicate_Admin
Administrator
Administrator

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 )

mahoneypat_0-1633089546880.png

Palmadita

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.