En este apartado vamos a hablar de las formas de establecer seguridad a métricas de un cubo multidimensional, los problemas que aparecen y sus soluciones.

Formas de establecer seguridad a métricas SSAS

Para controlar la seguridad de los objetos, operaciones y datos de Analysis Services se utilizan roles (grupos de usuarios). Los usuarios se pueden añadir o quitar de los roles y para esos roles se determinan unos permisos.

La información relativa a los roles que proporciona Microsoft se encuentra en el siguiente enlace:

https://docs.microsoft.com/en-us/sql/analysis-services/multidimensional-models/roles-and-permissions-analysis-services

Los métodos existentes para establecer seguridad a las métricas de un cubo que se encuentran en la documentación oficial son las siguientes:

  • Acceso personalizado a datos de una dimensión (dimension data)
  • Acceso personalizado a los datos de las celdas (Cell Data)

Acceso personalizado para una dimension

Con este procedimiento se puede denegar el acceso a una medida física y visible. La medida no aparecerá al acceder al cubo.

Si protegemos una medida física visible estaremos ocultando la información de todos los cálculos que procedan de esta, es decir, todas las medidas calculadas donde aparezca van a salir sin valor cuando el usuario sin acceso explore el cubo.

Los pasos son los siguientes:

  1. Seleccionar el rol al que se le va a establecer la seguridad
  2. Acceder a las propiedades del rol.
  3. Acceder a la pestaña ‘Dimension Data’, en el desplegable seleccionar ‘Measures Dimension’.1 - Acceso personalizado para una dimension4. Aparecen una serie de medidas del cubo con un recuadro para marcar, desmarcar aquellas que no queramos que vean los usuarios que pertenecen al rol.

2 - Acceso personalizado para una dimension

Por ejemplo, ocultamos’ Internet Order Quantity’, si entramos un rol con permisos podemos ver el valor.

3 - Acceso personalizado para una dimension

Si accedemos al cubo con el rol la medida ya no aparece.4 - Acceso personalizado para una dimension

Si queremos mostrar unas medidas calculadas y otras no que procedan de la física, habría que hacer lo siguiente:

  1. Crear un duplicado de la medida física con otro nombre
  2. Poner no visible la que hemos creado nueva.
  3. Mantener visible la original.
  4. Modificar las medidas calculadas que no se quieren proteger para que usen la medida renombrada no visible.
  5. Mantener las medidas calculadas a las que se les quiera aplicar la seguridad usando la medida original física visible.
  6. Establecer la seguridad con se ha explicado anteriormente, únicamente a la medida física visible.

Hay más información en el siguiente enlace:

https://docs.microsoft.com/en-us/sql/analysis-services/multidimensional-models/grant-custom-access-to-dimension-data-analysis-services

Acceso personalizado a los datos de las celdas

Este procedimiento se utiliza para permitir o denegar el acceso a los datos de un cubo a un determinado rol. La medida puede ser física o calculada.

La medida sigue apareciendo al acceder al cubo, pero no tiene valor.

Si protegemos una medida de esta manera estaremos ocultando la información de todos los cálculos que procedan de esta, es decir, todas las medidas calculadas donde aparezca van a salir sin valor cuando el usuario sin acceso a ella explore el cubo.

Esta forma de ocultación es útil cuando se quiere impedir el acceso a una medida calculada y no a la física de la que procede.

Los pasos son los siguientes:

  1. Acceder a la pestaña ‘Cell Data’ de las propiedades del rol.
  2. Marcar ‘Enable read permissions
  3. En la casilla ‘Allow Reading of cube content’ escribir ‘(NOT Measures.CurrentMember IS nombre_de_la_medida)’ para la medida que queremos ocultar1 - Acceso personalizado a los datos de las celdas4. Con esto, estaríamos haciendo que la medida Internet Gross Profit salga sin valor cuando accedemos al cubo con el rol

Hay más información en el siguiente enlace:

https://docs.microsoft.com/en-us/sql/analysis-services/multidimensional-models/grant-custom-access-to-cell-data-analysis-services

Problemas

Cuando la ocultación se realiza con ‘Cell Data’ (en el apartado Acceso personalizado a los datos de las celdas), las métricas con ‘distinct count’ aparecen sin valor cuando se usan varios filtros.

Por ejemplo, accedemos al cubo con el rol y mostramos la medida llamada ‘Customer Count’ que se calcula con distinct count de Clientes, tiene valor.

1 - Problemas

Añadimos dos filtros, como ‘United Kingdom’ y ‘United States’ de la geografía del cliente y ya no aparece valor

2 - Problemas

Soluciones

Hay que crear las medidas calculadas como físicas y después alterar su valor con un ‘scope’.

Por ejemplo, para ocultar el cálculo Gross Profit Margin habría que seguir los pasos siguientes:

  1. Renombrar el cálculo como ‘[Measures].[Gross Profit Margin_hidden]’.
  2. Crear una medida física en el cubo con valor nulo y con el nombre ‘Gross Profit Margin’.
  3. Crear un set ‘GrossProfitMarginSet’ que emplee la función ‘iserror’ para detectar si se produce error, debido a que el script mdx se ejecuta después de que la seguridad sea aplicada y el scope falla, de esta forma controlamos el error. Si no se hace este paso, y accedemos al cubo con un rol que no tiene permiso aparecerá un error, indicando que la instrucción “end scope” no corresponde con “scope”.
Create hidden Set GrossProfitMarginSet As

iif(iserror(strtomember("[Measures].[Gross Profit Margin]")), {},

{[Measures].[Gross Profit Margin]});
  1. Asignar el valor del cálculo con el scope.
Scope(GrossProfitMarginSet);

    This=[Measures].[Gross Profit Margin_hidden];

End scope;
  1. Ocultar la medida en la pestaña de propiedades del rol “Dimension Data”, con los mismos pasos que se explicaron en el punto ‘Acceso personalizado para una dimension (dimension data)’.
  2. El código mdx queda de la siguiente manera:
Create Member CurrentCube.[Measures].[Gross Profit Margin_hidden]

As (

      [Measures].[Sales Amount]

      -

      [Measures].[Total Product Cost]

    )

    /

    [Measures].[Sales Amount],

Format_String = "Percent",VISIBLE = 0,

Associated_Measure_Group = 'Sales Summary',

Non_Empty_Behavior =

 {

   [Measures].[Sales Amount],

   [Measures].[Total Product Cost]

 };     



Create hidden Set GrossProfitMarginSet As

iif(iserror(strtomember("[Measures].[Gross Profit Margin]")), {},

{[Measures].[Gross Profit Margin]});



Scope(GrossProfitMarginSet);

    This=[Measures].[Gross Profit Margin_hidden];

End scope;

 

0 Shares:
Deja una respuesta

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

You May Also Like
Leer más

Cómo refrescar un dataset de Power BI al finalizar el proceso de ETL

Power BI dispone de ciertas herramientas de administración: APIs administrativas, un SDK .NET y un módulo de PowerShell con cmdlets que permiten a los administradores ir más allá de lo que el portal de Power BI Admin ofrece. Vamos a ver las diferencias entre la API y los cmdlets y después mostraremos cómo usarlos en un caso práctico: resfrescar el dataset tras un evento, en este caso al finalizar la carga del datawarehouse.
In-Memory OLTP: Otra historia de corrupción y problemas de DMVs
Leer más

In-Memory OLTP: Otra historia de corrupción y problemas de DMVs

El uso de la funcionalidad In-Memory OLTP sigue siendo una rareza en general entre nuestros clientes y se desconoce el alto potencial para poder mejorar el rendimiento de los sistemas con alto nivel de concurrencia y transacciones. Nuestro experto Rubén Garrigós nos explica cómo habilitar dicha funcionalidad, qué problemas pueden ocurrir y cómo solucionarlos.
Leer más

Power BI embedded: Tus informes se vuelven omnipresentes

Crear reportes es esencial, pero, de nada sirve si no puedes compartirlos. Además de ver formas básicas de embeber un reporte de Power BI, esta sesión se centrará en cómo mostrar reportes dentro de sus propias aplicaciones web/móviles para compartir información con gente que está dentro y fuera de su organización (sin necesidad de cuenta de Power BI). Se trata brevemente Power BI Premium y Azure Power BI Embedded, así como otros temas relacionados con el licenciamiento.
Leer más

ScaleOut SSIS

Lo primero es saber que debemos esperar de ScaleOut, cuando se habla de Scale Out estamos hablando de la capacidad de un sistema o proceso para manejar una cantidad creciente de trabajo, y el potencial que tiene, es su capacidad de adaptarse para asumir el crecimiento del sistema o proceso.