¿Cómo filtrar otra tabla según el contexto dinámico actual?

Un usuario Pregunto ✅

Anónimo

Hola a todos,

La Tabla A (1 lado) y la Tabla B (muchos lados) están vinculadas a través de la clave de identidad del código. Ahora me gustaría contar filas en la Tabla B en función de algunos campos en la Tabla A, por ejemplo, me gustaría contar cuántas filas hay en la tabla B cuando B[property1] = A[Aproperty1] & B[property2] = A[Aproperty2]. Sería bastante fácil escribir en columnas calculadas:

=CALCULATE(COUNTROWS(TableB),FILTER(ALL(TableB),AND(TableB[property1]=TableA[Aproperty1],TableB[property2]=TableA[Aproperty2])))

Pero en la medida de la tabla dinámica, con TableA[Aproperty1] y TableA[Aproperty2] marcado en filas, si la medida se define así:

=CALCULATE(COUNTROWS(TableB),ALLEXCEPT(TableA,Aproperty1,Aproperty2))

La tabla B se filtrará primero en función de la tabla A en la clave principal del código, luego se realizarán los campos. Entonces, si hay códigos en la Tabla B que no se muestran en la tabla A, esos valores no se contarán.

¿Qué pasa si quiero incluir esos valores? He probado algo como a continuación pero sin suerteHombre frustrado

=CALCULATE(COUNTROWS(TableB),CROSSFILTER(TableB[code],TableA[code],none))

Entonces, ¿cómo puedo traducir la columna calculada a la medida? ¿O cómo puedo ignorar el filtro de relación en medida?

Tu ayuda sería muy apreciada

En respuesta a Anónimo

Hola @Anónimo,

>> ¿Para qué sirve esta temperatura?

Temp es el valor actual en el contenido de la fila. Real, cuando estas funciones se limitan a nivel de contenido de fila, puedo usarlas para obtener el valor actual. (Max u otras funciones matemáticas utilizadas para obtener el valor actual de número / fecha, lastnonblank adecuado con get text)

Descripción detallada de la fórmula:

1. El campo de filas property1 es de tableA, puedo usar la función lastnoblank para obtener el valor actual del contenido de la fila;

2. El campo Columns es de tableB, puedo usar la función max para obtener el valor actual del contenido de la fila.

3. Basándome en las variables anteriores, puedo filtrar los mismos registros de toda la tablaB con el mismo formulario property1 tableA y el formulario property2 actual tableB, y luego obtener el recuento de filas como resultado.

Quizás la descripción anterior sea compleja de entender.Smiley feliz

Saludos,

Xiaoxin Sheng

Hola @Anónimo,

Puede intentar utilizar la fórmula de Belwo si es adecuada para sus necesidades:

Dirección del filtro cruzado: ambos.

Measure:
CountRow = var temp= LASTNONBLANK(Sheet2[property2],[property2]) Return CALCULATE(COUNTROWS(Sheet2),FILTER(ALL(Sheet2),Sheet2[property1]=MAX(Sheet1[property1])&&Sheet2[property2]=temp))

Capture.PNG

Saludos,

Xiaoxin Sheng

Anónimo

En respuesta a v-shex-msft

@ v-shex-msft

¡Esto funciona de maravilla!Smiley muy feliz

Pero no entiendo bien esta expresión,

¿Qué significa esta temperatura?

¿Cómo se filtra el contexto?

¿Puedes ayudar a elaborar un poco más?

¡¡Muchas gracias!!

En respuesta a Anónimo

Hola @Anónimo,

>> ¿Para qué sirve esta temperatura?

Temp es el valor actual en el contenido de la fila. Real, cuando estas funciones se limitan a nivel de contenido de fila, puedo usarlas para obtener el valor actual. (Max u otras funciones matemáticas utilizadas para obtener el valor actual de número / fecha, lastnonblank adecuado con get text)

Descripción detallada de la fórmula:

1. El campo de filas property1 es de tableA, puedo usar la función lastnoblank para obtener el valor actual del contenido de la fila;

2. El campo Columns es de tableB, puedo usar la función max para obtener el valor actual del contenido de la fila.

3. Basándome en las variables anteriores, puedo filtrar los mismos registros de toda la tablaB con el mismo formulario property1 tableA y el formulario property2 actual tableB, y luego obtener el recuento de filas como resultado.

Quizás la descripción anterior sea compleja de entender.Smiley feliz

Saludos,

Xiaoxin Sheng

Anónimo

En respuesta a v-shex-msft

Entiendo.

¡Muchas gracias!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *