Pasar medida a SQL Query en Power BI

Un usuario Pregunto ✅

mqassas

Hola expertos en Power BI

Tengo la siguiente consulta SQL

select * from table1 where (field1 like (select field1 from users where (UserName=@CurrentLoginUser)) + '%')

Agregué la consulta anterior en Power BI, me gustaría establecer este parámetro SQL «@CurrentLoginUser» con el usuario actual que examina el informe.

  • ¿Es posible hacer eso en Power BI?
  • ¿Es posible pasar una medida con la función UserName() a SQL Query?

Si la respuesta es No entonces ¿Cómo se puede lograr eso en Power BI?

por cierto, he intentado Administrar roles que no me ayudan en este escenario

¡Cualquier ayuda sería apreciada!

kmcallister

Una solución que encontramos para RLS es traer otra tabla con los parámetros correctos (es decir, nombre de usuario, clave de región). En nuestro caso, usamos el nombre de usuario (nombre de usuario de AD) y luego incrustamos el tablero en nuestro sitio de Sharepoint. Luego usamos Sharepoint para pasar la URL con el nombre de usuario. Esto nos permitió mostrar el tablero correcto al usuario correcto.

A continuación se muestra la URL que estamos utilizando para filtrar el tablero. Agregue esto después de la ruta del tablero

?rs:Embed=true&filter=Nombre de la tabla%2FPARÁMETRO%20eq%20%27NOMBRE DE USUARIO%27

Entonces, en su caso exacto, querría algo como

(ruta del servidor calificada)?rs:Embed=true&filter=table1%2Ffield1%20eq%20%27Nombre de usuario%27

Espero que esto ayude.

Kevin

mqassas

En respuesta a kmcallister

¡Gracias por su respuesta!

  • ¿Está RLS disponible para Power BI Report Server?
  • Además, no creo que sea doble agregar el nombre de usuario en la URL, ¡necesito detectar automáticamente al usuario actual!

davidm5

En respuesta a mqassas

Si se está conectando a SQL Server, puede intentar usar SYSTEM_USER como se describe aquí:

https://community.powerbi.com/t5/Report-Server/Row-Level-Security-in-Power-BI-Report-Server/mp/4005…

mqassas

En respuesta a davidm5

Gracias por su respuesta, ¡realmente aprecio esta solución!

Pero desafortunadamente esto no funciona porque no puedo controlar el tipo de autenticación de la fuente de datos para el informe de Power BI, puedo hacer esto para el informe normal de SSRS pero para Power BI no puedo y debo especificar el nombre de usuario y la contraseña para poder acceder al base de datos durante la configuración «Obtener datos» En Power BI DeskTop, por lo que en este caso, el usuario actual será el mismo usuario que se ha proporcionado.

Por favor, si tiene alguna solución para esto, publíquela.

davidm5

En respuesta a mqassas

Como observa, este enfoque solo funciona si está utilizando ‘DirectConnect’ y las credenciales actuales del usuario que inició sesión para conectarse a la base de datos.

Si no puede hacer eso, el único otro enfoque que conozco es crear RLS personalizado en DAX. Hay una breve explicación sobre ese enfoque en el hilo al que me vinculé. No he hecho esto de ninguna manera seria, pero en general:

– necesitará una tabla de seguridad dedicada con columnas para el ID de usuario y cualquier valor que esté filtrando

– la función DAX USERNAME() le brinda la ID de usuario del usuario que inició sesión

– crea una medida basada en la ID de usuario (consulte el hilo vinculado anteriormente para obtener más detalles)

– luego puede filtrar una imagen usando esa medida

El gran inconveniente que veo es que su RLS se basa en un filtro de nivel visual, que los usuarios pueden cambiar. Probablemente haya una mejor manera de tomar estas herramientas básicas (una tabla de seguridad dedicada, la función DAX USERNAME()) para crear RLS personalizado que va más allá del filtro de nivel visual, pero no he investigado eso.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *