Cómo usar el procedimiento almacenado con parámetros en Power BI

Un usuario Pregunto ✅

Anónimo

Hola,

Después de leer muchos artículos en esta plataforma, estoy publicando esta pregunta porque todavía estoy luchando por resolver nuestro problema.

Queremos incrustar un informe o panel de Power BI en el panel de nuestro sitio web.

Déjeme intentar explicar el escenario.

Los datos específicos del usuario se muestran en el informe del panel existente una vez que el usuario inicia sesión en el portal.

Ejemplo: El usuario 1 ve algo como:

Total de productos agregados por usted: 100;

Total de productos vendidos por usted: 60;

País: India;

Subpaís: norte de la India

El usuario puede cambiar el menú desplegable de país y sub-país.

El usuario 2 puede ver diferentes valores según su identificación de usuario y el valor del país que ha seleccionado.

Ejemplo:

Total de productos añadidos por usted: 140;

Total de productos vendidos por usted: 56;

País: EE.UU .;

Subpaís: Nueva York

¿Es posible en Power BI pasar el procedimiento almacenado de MS SQL con parámetros cuyos valores cambiarán según la persona que haya iniciado sesión?

Algo como esto:

Para el usuario 1, la siguiente salida de la consulta serán datos de origen para Power BI:

EXEC GetsalesMilestone @CountryID = 1269, @SubCountryID = 1245, @UserID = 12

Para el usuario 2, siguiendo la salida de la consulta será datos de origen para Power BI:

EXEC GetsalesMilestone @CountryID = 1289, @SubCountryID = 3453, @UserID = 34

Para que los diferentes usuarios vean diferentes datos del informe, ya que los tres valores de los parámetros cambiarán con el usuario.

Además, ¿es posible cambiar estos valores de parámetros a través de la API de Power BI para que podamos pasar valores de parámetros en función de quién haya iniciado sesión?

Greg_Deckler

Podría ser posible hacer algo así, pero lo que parece que realmente desea es Row Level Security (RLS). ¿Está intentando hacer esto en un entorno DirectQuery o Import?

Anónimo

En respuesta a Greg_Deckler

Hola @Greg_Deckler

Probamos RLS, pero solo puede funcionar para los datos que ya están cargados en el conjunto de datos de escritorio de Power BI (para la creación de roles).

Es algo similar a cómo aplicamos filtros en columnas en MS Excel.

Para implementar esto, necesitaremos importar datos completos en el conjunto de datos de Power BI (que se ejecuta en millones de filas, prácticamente imposible) y luego aplicarles filtros con RLS.

Además, no podremos usar nuestros procedimientos almacenados existentes que tienen escrita lógica compleja de obtención de datos.

Estamos buscando reemplazar nuestros informes específicos de usuario existentes que se muestran en nuestra aplicación web con Power BI, donde cada usuario debería ver el informe de Power BI en función de los parámetros específicos del usuario pasados ​​al proceso almacenado (se explicó mi en el primer puerto).

Háganos saber si hay algo en Power BI con el que podamos lograr la funcionalidad, como se explica en nuestra primera publicación.

Anónimo

En respuesta a Greg_Deckler

Hola Greg,
Estoy tratando de hacer esto con el entorno de importación.
Pero estoy dispuesto a utilizar cualquiera de los dos enfoques si satisface nuestro requisito.

Greg_Deckler

En respuesta a Anónimo

Hola @Anónimo, estoy un poco confundido cuando dices que quieres hacer esto con la importación, pero también dices que prácticamente no es posible importar todo. No conozco su configuración exacta, pero aquí hay una forma alternativa de hacer potencialmente lo que está pidiendo.

https://docs.microsoft.com/en-us/power-bi/desktop-tutorial-row-level-security-onprem-ssas-tabular

Anónimo

En respuesta a Greg_Deckler

Hola @Greg_Deckler Dije que es prácticamente imposible importar datos completos porque, supongamos que tengo un total de 1000 registros (solo por ejemplo, el recuento real llega a millones) en mi base de datos.

Digamos que nuestra llamada de procedimiento almacenado para el usuario uno devuelve 5 registros (un recuento de registros más pequeño) según los parámetros específicos del usuario, como se mencionó en mi primera publicación.

Paso este procedimiento almacenado con parámetros codificados en el editor de consultas de Power BI.

El conjunto de resultados formará el conjunto de datos en Power BI en el que puedo crear un informe.

Este informe, una vez integrado en nuestra aplicación web, será visible para todos los usuarios que hayan iniciado sesión (¡pero en realidad este informe fue específico del usuario!).

Ahora, para evitar que un usuario vea un informe destinado a otro usuario, es posible que pueda aplicar la seguridad de nivel de fila.

Para implementar la seguridad a nivel de fila, necesitaré importar los 1000 registros en Power BI, crear roles con condiciones de filtro específicas y, en el servicio Power BI, tendré que asignar usuarios específicos a estos roles para que usuarios específicos vean los datos específicos del informe. que es lo que queremos.

Ahora bien, ¿por qué esto parece no ser práctico?

Motivo: Hay millones de registros que deberán importarse para implementar RLS.

Si asumo que el país es el criterio de filtro para implementar la seguridad a nivel de fila, tendré que crear un rol para cada país, lo que será una tarea enorme.

Después de esto, tendré que agregar a todos los usuarios de un país a la función específica de ese país.

Además, cada vez que se registra un nuevo usuario en nuestra aplicación web, tendré que agregar ese usuario a la función específica de ese país.

Estas son las razones por las que creo que será tedioso.

Estoy revisando el enlace proporcionado por usted. Lo actualizaré si ayuda.

Gracias !

Greg_Deckler

En respuesta a Anónimo

Bien, también consulte esta publicación de blog de RADACAD:

http://radacad.com/dynamic-row-level-security-with-power-bi-made-simple

Deja un comentario

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