La solicitud

De Gregory Hall, Director de ventas de la región Oeste
Tu objetivo
Escribe la regla de un rol llamado West en la tabla customers: conserva las filas cuyo customers[state] sea CA, OR o WA. El visual muestra las Sales y los Customers que ve cada miembro del rol.
- Cada usuario ve solo sus filas: revisa cada línea del visualpendiente
Tu regla de rol
- Visual
- A card of [Sales], [Customers] for each user
- Medidas del informe
Sales = CALCULATE(SUM(order_items[line_total]), orders[status] = "completed")Customers = COUNTROWS(customers)
Panel de datos: tablas y columnas
- order_items order_item_id, order_id, product_id, quantity, unit_price, discount_pct, line_total
- orders order_id, customer_id, order_date, status, channel, shipping_fee, coupon_code
- products product_id, name, category, subcategory, unit_price, unit_cost, launched_on, is_active
- customers customer_id, first_name, last_name, email, city, state, signup_date, segment, referral_source
- returns return_id, order_item_id, returned_on, reason, refund_amount
- Date Date, Year, Quarter, Month Number, Month, Year Month, Year Quarter, Day, Weekday Number, Weekday
Cargando el editor…
Solución de referencia
| User | Sales | Customers |
|---|---|---|
| Kayla Simmons (West) | 5,894,284.44 | 2,018 |
| Jason Reyes (West) | 5,894,284.44 | 2,018 |
Mote revisa tu resultado
Presiona Comprobar. Mote completa tu respuesta y la compara con lo que necesita el informe.
Lo que recibe Gregory, y por qué
La lección
La seguridad a nivel de fila (RLS, row-level security) oculta filas de datos a quienes no deberían verlas. Defines roles en Power BI Desktop; cada rol contiene una regla por tabla, una expresión DAX que devuelve VERDADERO o FALSO para cada fila. Los miembros del rol ven solo las filas donde la regla dice VERDADERO, y todos los visuales, totales y exportaciones lo siguen.
Dónde estás trabajando
Esta página es una herramienta de práctica, no Power BI. Escribes la regla de un rol en la tabla
customers; el motor la ejecuta en cada cliente y luego rellena el visual con lo que vería cada miembro
del rol: sus Sales y su número de Customers. Sigue las reglas de Power BI, así que una regla que funciona
aquí funciona allí.
Para hacerlo de verdad en Power BI Desktop: Modelado → Administrar roles → Nuevo (Modeling → Manage
roles → New), llama al rol West, selecciona la tabla customers y construye el filtro en el editor
desplegable (state es uno de CA, OR, WA) o selecciona Cambiar al editor DAX (Switch to DAX
editor) y escribe la regla de abajo. Pulsa Guardar (Save). Para comprobarlo, Modelado → Ver como
(Modeling → View as), marca West, Aceptar: todo el informe muestra ahora lo que ve el rol, con una
barra amarilla hasta que pulses Detener la visualización (Stop viewing).
La regla
customers[state] IN {"CA", "OR", "WA"}
IN { … } comprueba si el valor es uno de una lista. Es más corto y más claro que encadenar ORs:
customers[state] = "CA" || customers[state] = "OR" || customers[state] = "WA"
Ambas conservan las mismas filas. Las comparaciones de texto en DAX ignoran las mayúsculas, así que
"ca" también coincidiría.
Una regla, todas las tablas
Solo filtras customers, y aun así Sales se reduce también. Un filtro de seguridad se comporta como el
filtro de una segmentación que nadie puede borrar: fluye del lado de uno de cada relación al lado de
muchos. Customers filtra orders, orders filtra las líneas de pedido, y cada medida construida sobre ellas
ve solo datos del Oeste. Por eso las reglas pertenecen a las tablas de dimensión pequeñas: una regla
corta, y el esquema en estrella la lleva a todas partes.
La dirección contraria no se filtra por defecto. Un miembro del Oeste sigue viendo los 120 productos en
la lista de productos, porque products está en el lado de uno de su relación con order_items.
Normalmente está bien (los nombres de producto no son secretos); si no lo está, la tabla products
necesita su propia regla.
Los roles no son personas
Desktop define lo que puede ver cada rol. No decide quién está en él: añades personas y grupos a los roles en el servicio tras publicar (un nivel posterior). Un rol estático como este necesita un rol por región, así que con diez regiones mantienes diez roles y diez listas. El siguiente nivel los sustituye por una sola regla dinámica.
Errores comunes
- Un valor, no una prueba.
customers[state]a secas no es VERDADERO ni FALSO. - Reglas en la tabla de hechos. Filtrar
order_itemsfila por fila funciona, pero es más lento y deja sin filtrar customers y orders. - Probar como tú mismo. Como autor del informe lo ves todo; usa Ver como.
¡Linterna encendida!
Practicaste: row level securityrlsmanage rolesstatic rlsfilter propagationin operator
- Resuelto
- Sin pistas
- Al primer intento
