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
elaj
Helper IV
Helper IV

Calcular el comportamiento extraño del filtro

Hola

Tengo que mostrar porcentajes típicos de respuesta (categoría) de la encuesta ponderada.

Pensé que sabía cómo hacerlo y ahora obtengo un resultado muy confuso.

Ok, trato de explicarlo:

Tengo una columna con el peso, una columna con las respuestas (Q1_lbl) como "cadenas" que quiero utilizar como filtro para la medida porcentual (Q1 % (W)), para mostrar el porcentaje de cada respuesta (categoría). Tengo una columna adicional para el criterio de ordenación para las etiquetas (Q1_lbl_sort).

image.png

Necesito una "base" no ponderada para mostrar a mis espectadores y normalmente uso este enfoque:

Nueva medida:
Q1 % B (UW) á calculate(COUNTA(data[Q1_lbl]), data[Q1_lbl] <> Blank(), all(data[Q1_lbl]))
¿por qué data[Q1_lbl] <> BLANK()? porque sólo quiero calcular las personas que tienen respuestas.
¿por qué "todos"? porque quiero filtrar los valores por Q1_lbl. La base tiene que ser la misma, porque para todas las respuestas tenía la misma base.
Ahora necesito una base ponderada para calcular mi porcentaje y normalmente uso este enfoque:
Nueva medida:
Q1 % B (W) á calculate(SUM(data[weight]), data[Q1_lbl] <> Blank(), all(data[Q1_lbl]))

por qué data[Q1_lbl] <> BLANK()? porque sólo quiero calcular las personas que tienen respuestas.

¿por qué "todos"? porque quiero filtrar los valores por Q1_lbl. La base tiene que ser la misma, porque para todas las respuestas tenía la misma base.

Ahora necesito las menciones ponderadas de mis probands. es lo mismo que mi base ponderada pero sin la declaración "all", porque ahora quiero que se filtre por mi respuesta (categorías) Q1_lbl y normalmente uso este enfoque:

Nueva medida:

Q1 % N (W) á calculate(SUM(data[weight]), data[Q1_lbl] <> BLANK())

por qué data[Q1_lbl] <> BLANK()? porque sólo quiero calcular las personas que tienen respuestas.

calcular el porcentaje debería ser fácil ahora:

Nueva medida:

Q1 % (W) á [Q1 % N (W)] / [Q1 % B (W)]

y ahora tengo un problema. la medida de menciones [Q1 % N (W)] (naranja coloreada en la imagen) tiene los mismos valores en cada fila. Creo que es porque utilicé data[Q1_lbl] <> BLANK(). Pero tengo que usar esto.. Sólo quiero calcular a las personas que tienen una respuesta en Q1_lbl. Y pensé que sólo all(data[Q1_lbl]) debería eliminar los filtros para esta columna.

image.png

así que la primera pregunta es:

¿cómo puedo calcular solo las personas que tienen respuestas en Q1_lbl PERO no destruyen el filtro de Q1_lbl en el objeto visual?

¿Y cómo puedo filtrar esto para no crear valores en la fila marcada en rojo? (sin filtrar el objeto visual)

Y la otra cosa rara es.. si ahora ordeno Q1_lbl después de Q1_lbl_sort. entonces todo se filtra después de Q1_lbl.

Pero tampoco como debería. La fila 1 se ha ido... Está bueno.. Y [Q1 % N (W)] ahora tiene los valores correctos. Pero las dos columnas base deben tener los valores como en la imagen uno.

image.png

¿Tienes una idea de cómo resolver esto? ¿O lo estoy haciendo mal? ¿hay un mejor enfoque?

¿hay alguna manera de filtrar algo sobre una columna en una instrucción calculate sin destruir filtros adicionales agregados en el objeto visual de la misma columna?

aquí mi archivo

attached_pbx_file

gracias por sus respuestas

6 REPLIES 6
AntrikshSharma
Community Champion
Community Champion

use KEEPFILTERS en el código, incluso mientras cree que está eliminando en blanco, cuando se encuentra en la fila en blanco está devolviendo el mismo resultado porque data[Q1_lbl] <> BLANK () se expande a FILTER ( ALL ( data[Q1_lbl] ),data[Q1_lbl] <> BLANK () ) y luego incluso en la celda en blanco está devolviendo todas las filas en datos[Q1_lbl] que no están en blanco, pero con KEEPFILTERS se crea una INTERSECCION entre el filtro original y el nuevo filtro crear por CALCULATE.También para futuras referencias no es necesario utilizar TODO en este tipo de cálculo porque ya hay un TODO oculto en los datos[Q1_lbl] por lo que

data[Q1_lbl] <> BLANK (), ALL(data[Q1_lbl] ) es igual a data[Q1_lbl] <> BLANK () paraeste caso.
Q1 % N (W) =
CALCULATE ( SUM ( data[weight] ), KEEPFILTERS ( data[Q1_lbl] <> BLANK () ) )

ahora sólo tiene que utilizar KEEPFILTERS en todas las medidas y utilizar DIVIDE en lugar de la operación de división.

Q1 % (W) = DIVIDE([Q1 % N (W)], [Q1 % B (W)])

Hola @AntrikshSharma ,

gracias por la respuesta rápida.

keepfilters funciona bien para mi medida de menciones. Esto es genial.

pero para mi cálculo base necesito la suma de todas las menciones.. así que si utilizo keepfilters en ellos, se filtrarán... y una vez más tengo 100% como resultado. que está mal.

pero si lo hago como mi antiguo enfoque tendré valores en la primera fila:

image.png

así que básicamente no quiero valores en la primera fila.

y segundo:

cuando ahora ordeno Q1_lbl después de Q1_lbl_sort tengo el otro problema que mis valores se vuelven locos:

image.png

cómo resolver esto? ¿por qué la clasificación lo destruye todo? ¿Es esto un error?

este es mi resultado deseado:

image.png

gracias por sus respuestas 🙂

corrected_pbix

Hola @elaj ,

He modificado sus fórmulas y las he puesto en una nueva tabla "Nuevas medidas". Para las filas en blanco, puede filtrar en el panel de filtro. Para obtener más información, descargue el archivo pbix para comprobarlo.

1.PNG2.PNG

Y puedes hacer referencia a los blogs para aprender más la función de FILTER.

Uso de la función FILTER en DAX

La función FILTER en DAX

Filtro Power BI

Best Regards,
Xue Ding
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

Hola

Sí, sé que podría filtrar lo visual. el punto era no filtrar el objeto visual. pero hacerlo sólo dentro de la medida.

¿No hay manera de ignorar el filtro de las filas con "respuesta 1", "respuesta 2", etc., pero NO la fila en blanco?

Parece que ALL (u otro conjunto de filtros dentro de una instrucción calculate) utilizado en una columna determinada, siempre devuelve todos los valores en cada caso. sería bueno tener una manera de configurar DONDE! ALL debe devolver todos los valores. En mi caso... no en la fila en blanco.

y el problema de tipo sigue ahí.

gracias por sus respuestas.

Esto sigue sin funcionar si ordena la columna Q1_lbl por Q1_lbl_sort

Esta es la primera vez que he visto un problema debido a la orden de clasificación. Ahora esto está lastimando incluso mi cabeza también!!

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.