Jerarquías definidas por el usuario - jerarquías desigualesUser-Defined Hierarchies - Ragged Hierarchies

Una jerarquía desigual es una jerarquía definida por el usuario que tiene un número impar de niveles.A ragged hierarchy is a user-defined hierarchy that has an uneven number of levels. 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.Common examples include an organizational chart where a high-level manager has both departmental managers and non-managers as direct reports, or geographic hierarchies composed of Country-Region-City, where some cities lack a parent State or Province, such as Washington D.C., Vatican City, or New 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.For most hierarchies in a dimension, each level has the same number of members above it as any other member at the same level. 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.A ragged hierarchy is different in that the logical parent of at least one member is not in the level immediately above the member. Cuando ocurre esto, la jerarquía desciende a distintos niveles de diferentes rutas de obtención de detalles.When this occurs, the hierarchy descends to different levels for different drilldown paths. En una aplicación cliente, esto puede hacer que las rutas de obtención de detalles sean innecesariamente complicadas.In a client application, this can make drilldown paths unnecessarily complicated.

Las aplicaciones cliente varían en la forma de tratar una jerarquía desigual.Client applications vary in how well they handle a ragged hierarchy. 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.If ragged hierarchies exist in your model, be prepared to do a little extra work to get the rendering behavior you expect.

El primer paso consiste en comprobar la aplicación cliente para ver cómo trata la ruta de obtención de detalles.As a first step, check the client application to see how it handles the drilldown path. Por ejemplo, Excel repite los nombres de los elementos primarios como marcadores de posición para los valores que faltan.For example, Excel repeats the parent names as placeholders for missing values. Para ver este comportamiento, cree una tabla dinámica con la dimensión Sales Territory del modelo multidimensional de Adventure Works.To see this behavior yourself, build a PivotTable using the Sales Territory dimension in the Adventure Works multidimensional model. En una tabla dinámica que tiene los atributos Group, Country y Region de Sales Territory, verá que los países en los que falta un valor de región obtendrán un marcador de posición, en este caso una repetición del primario que hay por encima de él (el nombre del país).In a PivotTable having the Sales Territory attributes Group, Country, and Region, you will see that countries missing a region value will get a placeholder, in this case a repeat of the parent above it (Country name). Este comportamiento deriva de la propiedad de cadena de conexión MDX Compatibility=1, que es fija dentro de Excel.This behavior derives from the MDX Compatibility=1 connection string property that is fixed within 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.If the client does not naturally provide the drill-down behaviors you are looking for, you can set properties in the model to change at least some of those behaviors.

Este tema contiene las siguientes secciones:This topic contains the following sections:

Enfoques para modificar la navegación de obtención de detalles en una jerarquía desigual Approaches for modifying drilldown navigation in a ragged hierarchy

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.The presence of a ragged hierarchy becomes a problem when drilldown navigation does not return expected values or is perceived as awkward to use. Para corregir los problemas de navegación resultantes de jerarquías desiguales, considere las siguientes opciones:To fix navigation problems that result from ragged hierarchies, consider these options:

  • Use una jerarquía normal pero establezca la propiedad HideMemberIf en cada nivel para especificar si un nivel que falta se muestra al usuario.Use a regular hierarchy but set the HideMemberIf property on each level to specify whether a missing level is visualized to the user. Al establecer HideMemberIf, debe establecer también MDXCompatibility en la cadena de conexión para reemplazar los comportamientos de navegación predeterminados.When setting HideMemberIf, you should also set MDXCompatibility on the connection string to override default navigation behaviors. En este tema se ofrecen instrucciones para establecer estas propiedades.Instructions for setting these properties are in this topic.

  • Cree una jerarquía de elementos primarios y secundarios que administre explícitamente los miembros del nivel.Create a parent-child hierarchy that explicitly manages the level members. Para conocer esta técnica, vea la entrada de blog Ragged Hierarchy in SSAS (Jerarquía desigual en SSAS).For an illustration of the technique, see Ragged Hierarchy in SSAS (blog post). Para más información, vea Dimensiones de elementos primarios y secundariosen Libros en pantalla.For more information in Books Online, see Parent-Child Dimensions. 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.Downsides to creating a parent-child hierarchy are that you can only have one per dimension, and you typically incur a performance penalty when calculating aggregations for intermediate members.

    Si la dimensión contiene más de una jerarquía desigual, debe usar el primer enfoque y establecer HideMemberIf.If your dimension contains more than one ragged hierarchy, you should use the first approach, setting 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.BI Developers with practical experience in working with ragged hierarchies go further in advocating for additional changes in the physical data tables, creating separate tables for each level. Para más información sobre esta técnica, vea la entrada del blog de Martin Mason The SSAS Financial Cube–Part 1a–Ragged Hierarchies (El cubo financiero de SSAS - Parte 1a: Jerarquías desiguales) .See Martin Mason's the SSAS Financial Cube–Part 1a–Ragged Hierarchies (blog) for details about this technique.

Establecer HideMemberIf para ocultar miembros en una jerarquía normal Set HideMemberIf to hide members in a regular hierarchy

En la tabla de una dimensión desigual, los miembros que faltan de manera lógica se pueden representar de distintos modos.In a ragged dimension's table, the logically missing members can be represented in different ways. 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.The table cells can contain nulls or empty strings, or they can contain the same value as their parent to serve as a placeholder. 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.The representation of placeholders is determined by the placeholder status of child members, as determined by the HideMemberIf property, and the MDX Compatibility connection string property for the client application.

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.For client applications that support the display of ragged hierarchies, you can use these properties to hide logically missing members.

  1. En SSDT, haga doble clic en una dimensión para abrirla en el Diseñador de dimensiones.In SSDT, double-click a dimension to open it in Dimension Designer. La primera pestaña, Estructura de dimensión, muestra las jerarquías de atributo en el panel Jerarquías.The first tab, Dimension Structure, shows attribute hierarchies in the Hierarchies pane.

  2. Haga clic con el botón derecho en un miembro dentro de la jerarquía y seleccione Propiedades.Right-click a member within the hierarchy and select Properties. Establezca HideMemberIf en uno de los valores que se describen a continuación.Set HideMemberIf to one of the values described below.

    Configuración de HideMemberIfHideMemberIf Setting DescriptionDescription
    NeverNever Los miembros del nivel nunca están ocultos.Level members are never hidden. Es el valor predeterminado.This is the default value.
    OnlyChildWithNoNameOnlyChildWithNoName 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.A level member is hidden when it is the only child of its parent and its name is null or an empty string.
    OnlyChildWithParentNameOnlyChildWithParentName 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.A level member is hidden when it is the only child of its parent and its name is the same as the name of its parent.
    NoNameNoName Un miembro del nivel está oculto cuando su nombre está vacío.A level member is hidden when its name is empty.
    ParentNameParentName Un miembro del nivel está oculto cuando su nombre es idéntico al de su primario.A level member is hidden when its name is identical to that of its parent.

Establecer MDX Compatibility para determinar cómo se representan los marcadores de posición en las aplicaciones cliente Set MDX Compatibility to determine how placeholders are represented in client applications

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.After setting HideMemberIf on a hierarchy level, you should also set the MDX Compatibility property in the connection string sent from the client application. El valor de MDX Compatibility determina si se usa HideMemberIf o no.The MDX Compatibility setting determines whether the HideMemberIf is used.

Valor de MDX CompatibilityMDX Compatibility Setting DescriptionDescription UsoUsage
11 Mostrar un valor de marcador de posición.Show a placeholder value. Es el valor predeterminado utilizado por Excel, SSDT y SSMS.This is the default used by Excel, SSDT, and 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.It instructs the server to return placeholder values when drilling down empty levels in a ragged hierarchy. Si hace clic en el valor de marcador de posición, puede seguir profundizando hasta obtener los nodos secundarios (hoja).If you click the placeholder value, you can continue down to get to the child (leaf) nodes.

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.Excel owns the connection string used to connect to Analysis Services, and it always sets MDX Compatibility to 1 on each new connection. Este comportamiento conserva la compatibilidad con versiones anteriores.This behavior preserves backward compatibility.
22 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.Hide a placeholder value (either a null value or a duplicate of the parent level), but show other levels and nodes having relevant values. MDX Compatibility=2 se suele considerar el valor preferido para las jerarquías desiguales.MDX Compatibility=2 is typically viewed as the preferred setting in terms of ragged hierarchies. Un informe de Reporting ServicesReporting Services y algunas aplicaciones cliente de terceros pueden conservar este valor.A Reporting ServicesReporting Services report and some third-party client applications can persist this setting.

Vea tambiénSee Also

Crear jerarquías definidas por el usuario Create User-Defined Hierarchies
Jerarquías de usuario User Hierarchies
Dimensiones de elementos primarios y secundarios Parent-Child Dimensions
Propiedades de cadena de conexión (Analysis Services)Connection String Properties (Analysis Services)