Jerarquías definidas por el usuario: Jerarquías desiguales
Se aplica a: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
Una jerarquía desigual es una jerarquía definida por el usuario que tiene un número impar de niveles. Por ejemplo, un organigrama donde un director de alto nivel tiene tanto directores de departamento como no directores a su cargo o jerarquías geográficas que constan de País-Región-Ciudad, donde algunas ciudades no tienen un Estado o Provincia primario, como Washington D.C., Ciudad del Vaticano o Nueva Delhi.
En la mayoría de las jerarquías de una dimensión, cada nivel tiene el mismo número de miembros por encima de él que cualquier otro miembro del mismo nivel. Una jerarquía desigual es diferente en el sentido de que el primario lógico de al menos un miembro no se encuentra en el nivel que está inmediatamente por encima del miembro. Cuando ocurre esto, la jerarquía desciende a distintos niveles de diferentes rutas de obtención de detalles. En una aplicación cliente, esto puede hacer que las rutas de obtención de detalles sean innecesariamente complicadas.
Las aplicaciones cliente varían en la forma de tratar una jerarquía desigual. Si existen jerarquías desiguales en el modelo, prepárese para realizar un pequeño trabajo adicional con el fin de obtener el comportamiento de representación que espera.
El primer paso consiste en comprobar la aplicación cliente para ver cómo trata la ruta de obtención de detalles. Por ejemplo, Excel repite los nombres de los elementos primarios como marcadores de posición para los valores que faltan. Para ver este comportamiento, cree una tabla dinámica con la dimensión Sales Territory del modelo multidimensional de Adventure Works. En una tabla dinámica que tenga los atributos Grupo, País y Región del territorio de ventas, verá que los países o regiones que faltan un valor de región obtendrán un marcador de posición, en este caso una repetición del elemento primario encima (nombre de país). Este comportamiento deriva de la propiedad de cadena de conexión MDX Compatibility=1, que es fija dentro de Excel. Si el cliente no proporciona de forma natural los comportamientos de obtención de detalles que desea, puede establecer propiedades en el modelo para cambiar al menos algunos de esos comportamientos.
Este tema contiene las siguientes secciones:
Enfoques para modificar la navegación en profundidad en una jerarquía desigual
Establezca HideMemberIf para ocultar miembros en una jerarquía normal
Enfoques para modificar la navegación de obtención de detalles en una jerarquía desigual
La presencia de una jerarquía desigual se convierte en un problema cuando la navegación de obtención de detalles no devuelve los valores esperados o se percibe como difícil de usar. Para corregir los problemas de navegación resultantes de jerarquías desiguales, considere las siguientes opciones:
Use una jerarquía normal pero establezca la propiedad HideMemberIf en cada nivel para especificar si un nivel que falta se muestra al usuario. Al establecer HideMemberIf, debe establecer también MDXCompatibility en la cadena de conexión para reemplazar los comportamientos de navegación predeterminados. En este tema se ofrecen instrucciones para establecer estas propiedades.
Cree una jerarquía de elementos primarios y secundarios que administre explícitamente los miembros del nivel. Para conocer esta técnica, vea la entrada de blog Ragged Hierarchy in SSAS (Jerarquía desigual en SSAS). Para más información, vea Dimensiones de elementos primarios y secundariosen Libros en pantalla. Las desventajas de crear una jerarquía de elementos primarios y secundarios son que solo puede tener una por dimensión y que normalmente disminuye el rendimiento cuando se calculan agregaciones para los miembros intermedios.
Si la dimensión contiene más de una jerarquía desigual, debe usar el primer enfoque y establecer HideMemberIf. Los desarrolladores de BI que tienen experiencia práctica en el trabajo con jerarquías desiguales van más allá y son partidarios de realizar cambios adicionales en las tablas de datos físicas, creando tablas diferentes para cada nivel. Consulte El Cube-Part 1a-Ragged Hierarchies (blog) de Martin Mason para obtener más información sobre esta técnica.
Establecer HideMemberIf para ocultar miembros en una jerarquía normal
En la tabla de una dimensión desigual, los miembros que faltan de manera lógica se pueden representar de distintos modos. Las celdas de la tabla pueden contener valores NULL o cadenas vacías o bien pueden contener el mismo valor que su elemento primario para servir de marcador de posición. La representación de los marcadores de posición está determinada por el estado de los marcadores de posición de los miembros secundarios, según determina la propiedad HideMemberIf , y la propiedad de cadena de conexión MDX Compatibility de la aplicación cliente.
En aplicaciones cliente que admiten la visualización de jerarquías desiguales, puede usar estas propiedades para ocultar de forma lógica los miembros que faltan.
En SSDT, haga doble clic en una dimensión para abrirla en el Diseñador de dimensiones. La primera pestaña, Estructura de dimensión, muestra las jerarquías de atributo en el panel Jerarquías.
Haga clic con el botón derecho en un miembro dentro de la jerarquía y seleccione Propiedades. Establezca HideMemberIf en uno de los valores que se describen a continuación.
Configuración de HideMemberIf Descripción Nunca Los miembros del nivel nunca están ocultos. Este es el valor predeterminado. OnlyChildWithNoName Un miembro del nivel está oculto cuando es el único elemento secundario de su elemento primario y su nombre es nulo o es una cadena vacía. OnlyChildWithParentName Un miembro del nivel está oculto cuando es el único elemento secundario de su elemento primario y su nombre es el mismo que el de su primario. NoName Un miembro del nivel está oculto cuando su nombre está vacío. ParentName Un miembro del nivel está oculto cuando su nombre es idéntico al de su primario.
Establecer MDX Compatibility para determinar cómo se representan los marcadores de posición en las aplicaciones cliente
Después de establecer HideMemberIf en un nivel de jerarquía, debe establecer también la propiedad MDX Compatibility en la cadena de conexión enviada desde la aplicación cliente. El valor de MDX Compatibility determina si se usa HideMemberIf o no.
Valor de MDX Compatibility | Descripción | Uso |
---|---|---|
1 | Mostrar un valor de marcador de posición. | Es el valor predeterminado utilizado por Excel, SSDT y SSMS. Indica al servidor que devuelva los valores de marcador de posición al obtener detalles de niveles vacíos en una jerarquía desigual. Si hace clic en el valor de marcador de posición, puede seguir profundizando hasta obtener los nodos secundarios (hoja). Excel posee la cadena de conexión usada para conectarse a Analysis Services y siempre establece MDX Compatibility en 1 en todas las conexiones nuevas. Este comportamiento conserva la compatibilidad con versiones anteriores. |
2 | Ocultar un valor de marcador de posición (un valor NULL o un duplicado del nivel primario), pero mostrar otros niveles y nodos que tengan los valores pertinentes. | MDX Compatibility=2 se suele considerar el valor preferido para las jerarquías desiguales. Un informe de Reporting Services y algunas aplicaciones cliente de terceros pueden conservar esta configuración. |
Consulte también
Crear jerarquías definidas por el usuario
Jerarquías de usuario
Dimensiones de elementos primarios y secundarios
Propiedades de cadena de conexión (Analysis Services)