Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Grow your Fabric skills and prepare for the DP-600 certification exam by completing the latest Microsoft Fabric challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Código de rol DAX para RLS dinámico con varios valores

Hola

Estoy pasando por un problema.

Obtuvimos un informe de Power BI muy simple, con 2 conjuntos de datos:

- Fecha

- Ventas

Nuestros datos de ventas establecen algunas columnas, como esta:

- TransactionDate

- Cantidad

- SiteId

- SupplierId

- RestauranteId

Estamos utilizando Dynamic RLS, ya que queremos administrar los datos vistos por el usuario en nuestros informes incrustados.

Estamos utilizando una función (USERPRINCIPALNAME() ), para obtener una cadena de caracteres con el fin de establecer el filtro, por ejemplo:

SiteId:14,SiteId:18,SupplierId:20,RestaurantId:1,RestaurantId:7, RestaurantId:10

Con un solo valor, funciona perfectamente con el código a continuación, pero ¿qué pasa con los valores múltiples?

No sé por dónde empezar mi código, o cuál sería el código para construir dinámicamente el filtro (para saber qué valor filtrar)

¡Gracias!

Aquí está el código DAX de mi rol, para un valor.

Básicamente una división entre valores para obtener el ID

VAR customString = USERPRINCIPALNAME()

VAR indexOfSeparator = FIND ( ":", customString, 1, BLANK () )

VAR nameOfProperty = LEFT ( customString, indexOfSeparator - 1 )

VAR SiteId = DERECHA ( customString, LEN ( customString ) - indexOfSeparator )

DEVOLUCIÓN
'Ventas'[SiteId] == SiteId

2 REPLIES 2
Syndicate_Admin
Administrator
Administrator

He hecho algunos progresos.

Así es como imagino el algoritmo:

Así que recibo una cadena como SiteId:14,SiteId:18,SupplierId:20,RestaurantId:1,RestaurantId:7, RestaurantId:10

VAR globalFilter

-Split string por ","

-Divide la clave:valor por ":"

- Agregue el filtro al valor del filtro VAR global (ya que la clave es el nombre de la columna y el valor el ID)

-Devolver el filtro global VAR para filtrar la tabla

Mi filtro VAR sería el sitio

Ventas[SiteId] == 5 || Ventas[RestaurantId] == 1 || Ventas[RestaurantId] ==6

Y así sucesivamente

Pero, ¿cómo lograr esto en DAX? Haga el bucle de división y foreach en los valores.

Gracias

@NeimadB ,

Lo siento, no tengo muy clara la lógica, la función USERPRINCIPALNAME() devolverá el nombre de inicio de sesión, cuál es la relación con "SiteId:14,SiteId:18,SupplierId:20,RestaurantId:1,RestaurantId:7, RestaurantId:10".

Para implementar el RLS dinámico, generalmente se necesita una columna de nombre de usuario en la fuente de datos, cada nombre de usuario corresponde a sus datos, luego en el rol DAX, solo necesita filtrar el nombre de usuario. Puede consultar este documento para obtener los detalles: power-bi-row-level-security-and-dynamic-rls.

Saludos
Equipo de apoyo a la comunidad _ kalyj

Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

Helpful resources

Announcements
Europe Fabric Conference

Europe’s largest Microsoft Fabric Community Conference

Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.

RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

Top Solution Authors