cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Helper I
Helper I

Columna de filtrado basada en otra tabla basada en múltiples criterios

Hola

Hace poco empecé a trabajar con Power Bi. Simplemente no puedo seguir adelante con la siguiente pregunta.

En Table1, todos los valores de la columna ID deben generarse que no están contenidos con la columna ID en Table2

O que no cumplan los siguientes criterios en la tabla 2: isValid ? 1 AND isComplete ? 1.

Más adelante en el panel, la salida debe estar más limitada por una segmentación de tiempo.

Tabla1

Id

Nombre1

Nombre2

Ciudad

DE-001

Mike

S.

B.

DE-002

Ted

F.

L.

DE-003

Frank

M.

F.

DE-004

Marc

C.

T.

DE-005

Fiona

F.

L.

Tabla2

Id

isValid

isComplete

Fecha

DE-001

0

0

04.04.2016

DE-002

1

0

07.04.2016

DE-003

0

1

23.05.2016

DE-004

1

1

23.05.2016

DE-004

0

0

04.08.2017

DE-007

0

0

16.08.2017

Sin una segmentación de tiempo la salida debe ser: DE-001, DE-004, DE-005

Con una cortadora de tiempo establecida para todo el año 2017: DE-004, DE-005

¡Muchas gracias por sus sugerencias!

Saludos soleados desde Babelsberg,

Sigmund

15 REPLIES 15

Hola @v-shex-msft,

Muchas gracias, creo que ya casi llegamos. El filtro funciona casi como se desea. DE-001 y DE-005 se muestran correctamente.

Sin embargo, se muestran DE-002 y DE-003, que deben filtrarse y falta DE-004, aunque cumple los criterios.

Measure 3.jpg

Puede encontrar todos los datos aquí: https://www.magentacloud.de/share/bsog4e.dlt

Hola @Sigmund,

¿Quieres decir que todavía quieres mantener el efecto de filtro en tu mesa? si este es un caso, puede utilizar allselected para reemplazar todas las funciones, mantendrá los efectos de filtro actuales:

Measure =
VAR currID =
    VALUES ( Table1[ID] )
VAR list =
    CALCULATETABLE (
        VALUES ( Table2[ID] ),
        FILTER ( ALLSELECTED ( Table2 ), [isValid] = 1 && [isComplete] = 1 )
    )
RETURN
    IF ( COUNTROWS ( INTERSECT ( cuddID, list ) ) = 0, "Y", "N" )

Aviso: estas tablas no deben vincularse en función de la relación o estos efectos de filtro también se aplicarán a los objetos visuales.

Gestión de "todas" funciones en DAX: ALL, ALLSELECTED, ALLNOBLANKROW, ALLEXCEPT

saludos

Xiaoxin Sheng

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

Hola@v-shex-msft,

Parece, que ALLSELECTED funciona de manera diferente de lo esperado https://www.sqlbi.com/articles/the-definitive-guide-to-allselected/ . Con los datos de prueba que se muestran a continuación, obtengo en algunos casos el mismo resultado que cuando estoy usando un INTERSECT de Table11 y Table22.

Esto me llevó a la siguiente solución rápida y sucia:

1. Interseque de la Tabla11 y la Tabla22 para averiguar todos los datos de identificación que no están incluidos en el Cuadro22.

T1withOutT2 = 
VAR currID =
    VALUES ( Table11[ID] )
VAR list =
    VALUES ( Table22[ID] )
RETURN
    IF ( COUNTROWS ( INTERSECT ( currID; list ) ) = 0; "1"; "2" )

2. Filtrar a los de la Tabla22 que cumplan los criterios.

T2isFalse = 
VAR currID =
    VALUES ( Table11[ID] )
VAR list =
    CALCULATETABLE (
        VALUES ( Table22[ID] );
        FILTER ( Table22 ; [isValid] = 0 && [isComplete] = 0 )
    )
RETURN
    IF ( COUNTROWS ( INTERSECT ( currID; list ) ) = 0; "1"; "2" )

3. Para filtrar falsos negativos (en este caso DE-004) utilicé la medida notFalse und filtró el objeto visual. Si ahora filtro notFalse con unequal 3, obtengo el resultado deseado.

notFalse = [T1withOutT2]+[T2isFalse]

QDSolution.jpg

Por lo que veo, funciona. Pero por favor ayúdame a encontrar una solución más elegante. ¡Muchas gracias!

Saludos
Sigmund

Hola @v-shex-msft,

Parece que ALLSELECTED funciona de manera diferente de lo esperado. Con los datos de prueba que se muestran a continuación, obtengo en algunos casos el mismo resultado que cuando estoy usando un INTERSECT de Table11 y Table22.

Esto me llevó a la siguiente solución rápida y sucia.

1. Interseque de la Tabla11 y la Tabla22 para averiguar todos los datos de identificación que no están incluidos en el Cuadro22.

T1withOutT2 = 
VAR currID =
    VALUES ( Table11[ID] )
VAR list =
    VALUES ( Table22[ID] )
RETURN
    IF ( COUNTROWS ( INTERSECT ( currID; list ) ) = 0; "1"; "2" )

2. Filtrar a los de la tabla2 que cumplan los criterios.

T2isFalse = 
VAR currID =
    VALUES ( Table11[ID] )
VAR list =
    CALCULATETABLE (
        VALUES ( Table22[ID] );
        FILTER ( Table22 ; [isValid] = 0 && [isComplete] = 0 )
    )
RETURN
    IF ( COUNTROWS ( INTERSECT ( currID; list ) ) = 0; "1"; "2" )

3. Para filtrar falsos negativos (en este caso es DE-004) utilicé la medida notFalse und filtró el objeto visual. Si luego filtra notFalse para que no sea igual a 3, obtendrá el resultado deseado.

notFalse = [T1withOutT2]+[T2isFalse]

QDSolution.jpg

Por lo que veo, funciona. Pero por favor ayúdame a encontrar una solución más elegante. ¡Muchas gracias!

Saludos

Sigmund

Hola @Sigmund,

Según la instantánea, parece que me olvido de agregar una condición para comprobar si la tabla 1 id existe en la tabla 2.I modificar la fórmula de medida para agregar la condición para confirmar esa situación:

Measure =
VAR T1List =
    VALUES ( Table11[ID] )
VAR T2List =
    CALCULATETABLE (
        VALUES ( Table22[ID] );
        FILTER ( Table22; ( [isValid] = 0 && [isComplete] = 0 ) || [ID] IN currID )
    )
RETURN
    IF ( COUNTROWS ( INTERSECT ( T1List; T2List ) ) = 0; "Y"; "N" )

saludos

Xiaoxin Sheng

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

Hola @v-shex-msft,

Gracias, ¿te referías?

Measure = 
VAR T1List =
    VALUES ( Table11[ID] )
VAR T2List =
    CALCULATETABLE (
        VALUES ( Table22[ID] );
        FILTER ( Table22; ( [isValid] = 0 && [isComplete] = 0 ) || [ID] IN T1List )
    )
RETURN
    IF ( COUNTROWS ( INTERSECT ( T1List; T2List ) ) = 0; "Y"; "N" )

El resultado no difiere de la medida anterior en función de los datos de prueba.

Measure.jpg

Helpful resources

Announcements
November Update

Check it Out!

Click here to read more about the November 2020 Updates!

Community Conference

Power Platform Community Conference

Check out the on demand sessions that are available now!

secondImage

Power Platform October Community Highlights

Check out the top community contributors across all of the communities

secondImage

Create an end-to-end data and analytics solution

Learn how Power BI works with the latest Azure data and analytics innovations at the digital event with Microsoft CEO Satya Nadella.

Top Solution Authors
Top Kudoed Authors