Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more.
Get startedGrow your Fabric skills and prepare for the DP-600 certification exam by completing the latest Microsoft Fabric challenge.
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
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
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.
Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.