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
Kazoo60
Frequent Visitor

Establecer filtro basado en la medida DAX

Soy nuevo en Power BI. Estoy trabajando con una tabla de elementos de trabajo y necesito devolver artículos que cumplan cualquiera de las 2 condiciones:

1) o bien el elemento de trabajo está programado para una semana que el usuario selecciona de una segmentación de datos

O

2) el elemento de trabajo llega tarde

He creado una segmentación dedatos de fechas de vencimiento de fin de semana y puedo extraer el valor seleccionado en una medida. Esa segmentación de datos es una tabla dinámica que genera un valor para la semana actual y 2 semanas más (dinámica en función de la fecha actual). Funciona bien.

He creado una columna calculada en la tabla "AssignedTaskStatus" que indica si la tarea es "Tarde". Este valor también se devuelve con precisión.

Ahora el problema: He escrito una fórmula DAX que esperaba que evaluaría para cada fila de la tabla y devolviera "sí" o "no" para la fila que se incluye, y luego podría establecer esa columna como filtro para el objeto visual.

InSelectedWeekOrLate = 
VAR WkEndingDate = SELECTEDVALUE(CurrentWkEndingDate[WkEndingDate].[Date])
VAR Result = if(VALUES(TaskResourceAssignment[FinishWkEndingDate])=WkEndingDate, "yes"
            ,if(VALUES(TaskResourceAssignment[StartWkEndingDate])=WkEndingDate, "yes"
            ,if(VALUES(TaskResourceAssignment[AssignedTaskStatus])="Late", "yes","no")
            ))
return(Result)

Recibo un error de cálculo: se proporcionó una tabla de varios valores donde se esperaba un único valor.

El diseño del informe aparece a continuación para el contexto. La segmentación de datos del recurso asignado al trabajo está conectada a la tabla y funciona bien. Me gustaría que solo se mostraran en la tabla las tareas previstas para la semana del 24 de abril y las tareas tardías.

Report.PNG

Puede que no esté siguiendo una estrategia que sea factible, así que por favor hágamelo saber si estoy mirando todo esto mal y necesito tomar otro enfoque.

Gracias

5 REPLIES 5
v-shex-msft
Community Support
Community Support

HI @Kazoo60,

El bi de potencia actual no admite crear una columna/tabla de cálculo dinámico basada en filtros/cortadoras. Por favor, utilice la fórmula de medida en su lugar. (medir, filtrar/dividir y calcular el trabajo de columna en diferentes niveles de datos, no se puede utilizar el nivel secundario para interactuar con su elemento primario)

saludos

Xiaoxin Sheng

Community Support Team _ Xiaoxin
If this post helps, please consider accept as solution to help other members find it more quickly.

Gracias @v-shex-msft por la respuesta. Sin embargo, todavía estoy un poco perdido. ¿Puede darme un poco más de explicación o un ejemplo de lo que quiere decir con "usar la fórmula de medida en su lugar"? Creo que creé una fórmula de medida (proporcionada en mis notas). ¿O hay diferentes tipos de medidas?

Gracias

Hola @Kazoo60,

Después de comprobar la fórmula DAX, encontré que está utilizando la función values para extraer los valores de contenido de fila actuales del campo de tabla. AFAIK, la función VALUES se puede utilizar para extraer contenido de fila aggerated que puede contener un solo valor o lista de valores. (Power bi no le permite utilizar operadores matemáticos para comparar tipos de lista de valor con un solo valor)

Puede intentar utilizar las siguientes fórmulas de medida si es adecuada para su escenario:

InSelectedWeekOrLate =
VAR WkEndingDate =
    MAX ( CurrentWkEndingDate[WkEndingDate] )
VAR currStatus =
    SELECTEDVALUE ( TaskResourceAssignment[AssignedTaskStatus] )
VAR FinishWkEndingDate =
    VALUES ( TaskResourceAssignment[FinishWkEndingDate] )
VAR StartWkEndingDate =
    VALUES ( TaskResourceAssignment[StartWkEndingDate] )
RETURN
    IF (
        WkEndingDate IN UNION ( FinishWkEndingDate, StartWkEndingDate ),
        "yes",
        IF ( currStatus = "Late", "yes", "no" )
    )

Para las fórmulas de medida, puede usarlas en el filtro de nivel visual para filtrar registros:
Aplicación de un filtro de medida en Power BI

saludos

Xiaoxin Sheng

Community Support Team _ Xiaoxin
If this post helps, please consider accept as solution to help other members find it more quickly.

¡Gracias! He aprendido mucho sobre la sintaxis y la estrategia de DAX de la función que proporcionó. Y sí, sí aborda el problema.

Tim

Kazoo60
Frequent Visitor

Lo descubrí. Necesitaba usar una "Columna" y no una medida. Si estás a un día de la página, voy a dejar el puesto en caso de que ayude a alguien más.

La columna calculada se agregó a la tabla donde necesito hacer el filtrado. El código de la columna puede recuperar el valor de la segmentación de datos como antes, pero también puede hacer referencia a los valores de las columnas de la fila directamente que no funcionaban para las medidas (que deben ser operadores SET).

InSelection = 
VAR WkEndingDate = SELECTEDVALUE(CurrentWkEndingDate[WkEndingDate].[Date])
VAR InSelection = if(TaskResourceAssignment[FinishWkEndingDate].[Date]=WkEndingDate, "yes"
                 ,if(TaskResourceAssignment[StartWkEndingDate]=WkEndingDate, "yes"
                 ,if(TaskResourceAssignment[AssignedTaskStatus]="Late", "yes", "no")
))
return(InSelection)

Luego agregué la nueva columna "InSelection" al panel de filtro y establecisé su valor requerido en "yes".

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.