La idea
Una página de Power BI parece un conjunto de imágenes, pero nada en ella es una imagen hasta el final. Cada visual es una pregunta, y la pregunta es una medida evaluada bajo un conjunto de filtros. Cuando el lector hace clic en una barra, elige un valor en un segmentador o define un filtro de página, no cambia el aspecto de las imágenes. Agrega un filtro, y todas las medidas de la página se ejecutan de nuevo con él.
Esa sola idea explica por qué la interactividad "simplemente funciona" con las medidas corrientes, y por qué unas pocas medidas fallan en cuanto alguien toca el informe.
Figura 1
Un clic en la barra de app de un gráfico de canales
'Date'
- Date
- Year
- Month
orders
- order_id
- order_date
- channel
- status
channel = "app"
customers
- customer_id
- segment
- state
products
- product_id
- category
order_items
- order_id
- product_id
- line_total
- Una página tiene un gráfico de barras de ventas por
orders[channel]y, al lado, uno de ventas porproducts[category]. Los dos leenorder_items. - El lector hace clic en la barra de app. El clic se convierte en un filtro sobre
orders[channel], igual que lo haría un segmentador. - El filtro baja hasta
order_items. El gráfico de categorías vuelve a evaluarSalessolo con las líneas de app, así que sus barras se encogen: eso es el filtrado cruzado. - Los filtros no suben de vuelta. Una tarjeta con
COUNTROWS(customers)no recibe nada de este clic, así que no cambia, y el lector se pregunta por qué.
Por qué existe
Un informe estático responde la pregunta que pensó su autor. Cada gerente de Harbor & Pine tiene una
pregunta distinta: web en el Oeste, Lighting en las fiestas, solo clientes de empresa. Un autor que
construye una página por pregunta no termina nunca. Dejar que el lector ponga los filtros, y escribir
las medidas una sola vez (la misma Sales en una tarjeta, un gráfico y un tooltip), es lo que hace
que una página sirva a cuarenta personas.
El costo es que el autor ya no controla qué filtros ve una medida. Una medida se evalúa bajo lo que elija el lector, y se escribió para el caso que el autor imaginó.
Cómo funciona por dentro
Entre un clic y una imagen nueva hay una cadena fija de eventos.
- El clic se convierte en un filtro sobre una columna. Una barra del canal app es
orders[channel] = "app"; el valor de un segmentador es lo mismo. - Edit interactions decide quién lo recibe. Por defecto un gráfico filtra a los demás. Puedes cambiar un visual de destino a resaltar (la barra completa queda de fondo y la parte filtrada se dibuja encima) o a ninguno (ignorar). Es un ajuste por visual en Format → Edit interactions.
- El filtro fluye por las relaciones, del lado uno al lado muchos, hasta la tabla que lee la medida.
- Cada medida se evalúa de nuevo bajo todos los filtros combinados.
Figura 2
Qué pasa entre el clic y la nueva imagen
- Clic o segmentador En una barra, un punto, un valor del segmentador
-
orders[channel] = "app"El clic convertido en filtro - Edit interactions Por visual: filtrar, resaltar o nada
- Cada medida Se evalúa de nuevo con los filtros nuevos
- Repintado Cada visual afectado se redibuja
- Un clic o un valor del segmentador es el inicio de la cadena, no un repintado.
- Se traduce en un filtro sobre una columna de una tabla.
- **Format → Edit interactions** decide, visual por visual, si el filtro se aplica, solo resalta o se ignora.
- Cada visual que aceptó el filtro evalúa de nuevo sus medidas con él. Una medida con
ALLoCALCULATEdentro puede conservar o descartar ese filtro a propósito. - Solo entonces cambia la imagen.
Filtrar o resaltar
La diferencia entre los dos modos se ve bien en el gráfico de categorías tras un clic en la barra de
app. Con filtrar, la barra de Furniture pasa a ser las ventas de Furniture en pedidos de app y
queda más corta. Con resaltar, la barra conserva su longitud completa en un color atenuado y la
parte de app se dibuja dentro, así que el lector ve el todo y la porción. Resaltar es mejor cuando
la porción debe leerse como parte de algo; filtrar es mejor cuando el resto es ruido. Resaltar solo
funciona con medidas que se pueden dividir por el valor seleccionado, así que una medida que use
ALL sobre esa columna se verá mal.
Los tres niveles de filtro
Un filtro puede vivir en un visual, en una página o en todo el informe, y los tres se combinan con AND. Ponlo en el visual cuando pertenece solo a ese gráfico, en la página cuando define de qué trata la página ("solo pedidos completados") y en el informe cuando nada del archivo debe ver el resto. Los segmentadores son los mismos filtros, puestos en manos del lector.
Medidas que ignoran el clic a propósito
A veces una medida no debe obedecer todos los filtros. Un porcentaje necesita dos números: la celda
y el total del que es porcentaje. El total es un CALCULATE que quita algunos filtros, y la función
que uses decide cómo se trata el segmentador del lector.
ALL(orders[channel]) ignora el segmentador: el porcentaje es "de la empresa". ALLSELECTED lo
conserva: el porcentaje es "de lo que elegí". Ninguno está mal; solo uno coincide con la frase que
promete la página.
Medidas que siguen el clic
La necesidad opuesta es una medida que lea la selección. SELECTEDVALUE(orders[channel], "All channels") devuelve el único canal seleccionado, o el valor alternativo cuando no hay ninguno
o hay varios. Usada en una medida da un título que dice lo que eligió el lector. Un Top 3 construido
con TOPN y un ranking dentro de una medida también sigue al lector, mientras que un filtro Top N
de un visual fija la cantidad en ese visual.
Dónde está en Power BI Desktop
Usa View → Selection pane y Bookmarks para guardar qué filtros, visibilidad y foco se conservan; un marcador registra el estado de la página, no los datos. Los tooltips vienen de Format → Visual → Tooltips, y un tooltip de página de informe es una página pequeña que recibe el punto señalado como filtro.
Errores comunes
"Un segmentador cambia el gráfico"
Un segmentador cambia los filtros, y la medida del gráfico se evalúa de nuevo. La distinción
importa porque una medida puede decidir ignorarlo. Una tarjeta con las ventas totales de la empresa
junto a un segmentador que no le hace nada no es un error si la medida usa ALL; es una decisión
que conviene documentar.
"Hacer clic en una barra filtra todos los visuales de la página"
Solo los visuales cuya interacción está en filtrar, y solo aquellos cuya medida lee una tabla a la
que llega el filtro. Un conteo de clientes no cambia al hacer clic en un canal, porque el filtro
fluye de orders hacia order_items y nunca sube a customers. Revisa las flechas del modelo y
Edit interactions antes de sospechar del DAX.
"Un porcentaje del total es un porcentaje; un segmentador no puede romperlo"
Un porcentaje con ALL en el denominador se mantiene tranquilo ante un segmentador, pero uno que
olvidó quitar el filtro de la fila se vuelve 100.0% en cada fila. Cuál es el correcto depende de la
frase que lee el lector. Prueba la medida sin nada seleccionado, con un valor y con todos antes de
publicar la página.
Ponte a prueba
Una pregunta. Al responderla, la lección queda marcada en el mapa; nunca bloquea un nivel.
No del todo. Eso es lo que daría ALL, que también quita el filtro del segmentador. ALLSELECTED conserva los filtros que vienen de fuera del visual.Prueba otra respuesta.
Correcto. El denominador son las ventas de lo seleccionado, y solo web está seleccionado, así que la fila de web es su propio total.
No del todo. El segmentador y la fila filtran la misma columna con el mismo valor, así que coinciden en vez de chocar. La celda no queda vacía.Prueba otra respuesta.
No del todo. La fila es web, así que el numerador son las ventas de web. El segmentador no se ignora: ALLSELECTED lo conserva a propósito.Prueba otra respuesta.
Lección hecha: ya está marcada en el mapa.