1. Faro

Nivel 8 · Desafío final: protege el informe de ventas B2B

La solicitud

De Marcus Bennett, Jefe de ventas B2B

“El equipo B2B recibe su propio informe de ventas el mes que viene. Paso uno: el equipo debe ver siempre solo clientes empresa, nunca consumidores. Paso dos: cada ejecutivo de cuenta ve los clientes empresa de los estados que cubre, y Lisa, que gestiona a los ejecutivos, ve todo lo que cubren sus ejecutivos. La lista de ejecutivos cambia a menudo, así que vive en una tabla, no en el modelo.”

Tu objetivo

Paso 1 de 2. Paso 1. Escribe la regla de un rol estático llamado B2B en customers: conserva solo los clientes cuyo segmento sea business. El visual muestra lo que ven los miembros del rol.

  • Cada usuario ve solo sus filas: revisa cada línea del visualpendiente

Paso 1 · tu regla de rol

Rol de seguridad
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…

    VisualBefore your rule, every user sees everything
    El visual antes de tu respuesta
    UserSalesCustomers
    Nicole Adams (B2B)5,894,284.442,018
    Lisa Harper (B2B)5,894,284.442,018

    Mote revisa tu resultado

    Presiona Comprobar. Mote completa tu respuesta y la compara con lo que necesita el informe.

    Paso 2 · tu regla de rol

    Rol de seguridad
    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
    • Reps state, rep_email, manager_email

    Cargando el editor…

      VisualBefore your rule, every user sees everything
      El visual antes de tu respuesta
      UserSalesCustomers
      Nicole Adams (rep)5,894,284.442,018
      Andrew Collins (rep)5,894,284.442,018
      Lisa Harper (manager)5,894,284.442,018
      Omar Haddad (manager)5,894,284.442,018

      Mote revisa tu resultado

      Presiona Comprobar. Mote completa tu respuesta y la compara con lo que necesita el informe.

      La lección

      Este caso pone a trabajar todo el capítulo: primero un rol estático, luego una regla dinámica que atiende a ejecutivos y a sus gerentes desde una tabla que mantiene Operaciones de ventas.

      Dónde estás trabajando

      Una herramienta de práctica, no Power BI: cada paso es una regla de seguridad en customers, y el visual muestra las Sales y los Customers que vería cada persona de la lista. En Power BI Desktop las mismas reglas van en Modelado → Administrar roles (con Cambiar al editor DAX; Modeling → Manage roles, Switch to DAX editor), se prueban con Modelado → Ver como (marca Otro usuario para la dinámica) y sus miembros se añaden en el servicio, en Más opciones (…) → Seguridad del modelo semántico.

      Paso 1: un rol para un segmento

      La primera regla es estática: solo clientes empresa. No necesita una lista de estados ni correos, porque todos los miembros del rol B2B ven las mismas filas. El visual lo muestra: Nicole y Lisa obtienen números idénticos.

      customers[segment] = "business"

      Paso 2: ejecutivos y su gerente

      La tabla Reps tiene una fila por estado cubierto, con el ejecutivo que lo tiene a su cargo y el gerente de ese ejecutivo. Para cada cliente, la regla necesita dos búsquedas, el ejecutivo y el gerente del estado del cliente, y conserva la fila cuando la persona conectada es cualquiera de los dos. Un cliente sigue teniendo que ser una empresa.

      VAR nombra cada pieza una sola vez, lo que hace legible la regla y evita escribir dos veces la misma búsqueda:

      VAR me = USERPRINCIPALNAME()
      VAR rep = LOOKUPVALUE(Reps[rep_email], Reps[state], customers[state])
      VAR manager = LOOKUPVALUE(Reps[manager_email], Reps[state], customers[state])
      RETURN customers[segment] = "business" && (rep = me || manager = me)

      Los paréntesis importan. && se evalúa antes que ||, así que sin ellos la prueba del gerente quedaría sola y dejaría que los gerentes vieran también a los clientes consumidores.

      Los estados sin fila en Reps devuelven un vacío en ambas búsquedas, así que sus clientes quedan ocultos para todos en este rol. Es el valor predeterminado seguro: un estado nuevo es invisible hasta que Operaciones de ventas lo asigna.

      Gerentes con equipos más profundos

      Esta regla maneja un nivel: un ejecutivo y su gerente directo. Los organigramas con varios niveles (un director por encima de Lisa) suelen guardar una ruta por persona y probarla con PATHCONTAINS, o mantienen una tabla aparte de quién puede ver qué estado, una fila por persona y estado, comprobada con IN CALCULATETABLE(VALUES(…), … = USERPRINCIPALNAME()). La idea sigue siendo la misma: la regla pregunta quién ha iniciado sesión, y una tabla responde.

      Antes de enviarlo

      Prueba como cada ejecutivo, como cada gerente y como alguien del rol que no está en Reps (no debería ver nada). Añade al equipo B2B al rol como un solo grupo de seguridad. Mantén fuera a los creadores: como Admins, Members o Contributors del área de trabajo verían todas las filas de todos modos, y la prueba no te diría nada.

      Elige qué puede ejecutarse en este sitio. Puedes cambiarlo cuando quieras desde "Configurar cookies", al pie de cada página.