Compartilhar via


Hierarquias esfarrapadas

Uma hierarquia esfarrapada é uma hierarquia definida pelo usuário que tem um número desigual de níveis. Exemplos comuns incluem um gráfico organizacional em que um gerente de alto nível tem gerentes departamentais e não gerentes como relatórios diretos, ou hierarquias geográficas compostas por Country-Region-City, onde algumas cidades não têm um Estado ou província pai, como Washington D.C., Cidade do Vaticano ou Nova Délhi.

Para a maioria das hierarquias em uma dimensão, cada nível tem o mesmo número de membros acima dele que qualquer outro membro no mesmo nível. Uma hierarquia esfarrapada é diferente porque o pai lógico de pelo menos um membro não está no nível imediatamente acima do membro. Quando isso ocorre, a hierarquia desce para níveis diferentes para caminhos de detalhamento diferentes. Em um aplicativo cliente, isso pode tornar os caminhos de busca detalhada desnecessariamente complicados.

Os aplicativos cliente variam em como lidam bem com uma hierarquia esfarrapada. Se existirem hierarquias esfarrapadas em seu modelo, esteja preparado para fazer um trabalho extra para obter o comportamento de renderização esperado.

Como primeira etapa, verifique o aplicativo cliente para ver como ele lida com o caminho de detalhamento. Por exemplo, o Excel repete os nomes de referência como substitutos para valores ausentes. Para ver esse comportamento por si mesmo, crie uma Tabela Dinâmica usando a dimensão Território de Vendas no modelo multidimensional Adventure Works. Em uma Tabela Dinâmica com os atributos Grupo, País e Região do Território de Vendas, você verá que os países sem valor de região receberão um espaço reservado; neste caso, será uma repetição do nível hierárquico acima deles (nome do país). Esse comportamento deriva da configuração da cadeia de conexão MDX Compatibility=1 que é fixada no Excel. Se o cliente não fornecer naturalmente os comportamentos de busca detalhada que você está procurando, você poderá definir propriedades no modelo para alterar pelo menos alguns desses comportamentos.

Este tópico contém as seguintes seções:

Abordagens para modificar a navegação detalhada em uma hierarquia irregular

A presença de uma hierarquia esfarrapada torna-se um problema quando a navegação detalhada não retorna valores esperados ou é percebida como estranha de usar. Para corrigir problemas de navegação resultantes de hierarquias esfarrapadas, considere estas opções:

  • Use uma hierarquia regular, mas defina a HideMemberIf propriedade em cada nível para especificar se um nível ausente é visualizado para o usuário. Ao definir HideMemberIf, você também deve definir MDXCompatibility na cadeia de conexão para substituir os comportamentos de navegação padrão. As instruções para definir essas propriedades estão neste tópico.

  • Crie uma hierarquia pai-filho que gerencie explicitamente os membros de nível. Para obter uma ilustração da técnica, consulte Hierarquia Irregular no SSAS (postagem no blog). Para obter mais informações nos Livros Online, consulte Parent-Child Hierarquia. As desvantagens de criar uma hierarquia pai-filho são que você só pode ter uma por dimensão e normalmente incorre em uma penalidade de desempenho ao calcular agregações para membros intermediários.

Se sua dimensão contiver mais de uma hierarquia irregular, você deverá usar a primeira abordagem, definindo HideMemberIf. Os desenvolvedores de BI com experiência prática em trabalhar com hierarquias esfarrapadas vão além na defesa de alterações adicionais nas tabelas de dados físicos, criando tabelas separadas para cada nível. Consulte o blog de Martin Mason, as Hierarquias Irregulares do SSAS Financial Cube-Part 1a, para obter detalhes sobre essa técnica.

Definir HideMemberIf para ocultar membros em uma hierarquia regular

Em uma tabela de dimensão irregular, os membros logicamente ausentes podem ser representados de diferentes maneiras. As células da tabela podem conter nulls ou cadeias de caracteres vazias, ou podem conter o mesmo valor que o pai para servir como um placeholder. A representação de espaços reservados é determinada pelo status de espaços reservados dos membros filhos, conforme determinado pela propriedade HideMemberIf e pela propriedade de cadeia de conexão MDX Compatibility para o aplicativo cliente.

Para aplicativos cliente que dão suporte à exibição de hierarquias esfarrapadas, você pode usar essas propriedades para ocultar membros logicamente ausentes.

  1. No SSDT, clique duas vezes em uma dimensão para abri-la no Designer de Dimensão. A primeira guia, Estrutura de Dimensão, mostra hierarquias de atributo no painel Hierarquias.

  2. Clique com o botão direito do mouse em um membro na hierarquia e selecione Propriedades. Defina HideMemberIf como um dos valores descritos abaixo.

    Configuração HideMemberIf Descrição
    Never Os membros de nível nunca são ocultos. Esse é o valor padrão.
    FilhoÚnicoSemNome Um membro de nível fica oculto quando é o único filho de seu pai e seu nome é nulo ou uma cadeia de caracteres vazia.
    OnlyChildWithParentName Um membro de nível fica oculto quando é o único filho de seu pai e seu nome é o mesmo que o nome de seu pai.
    NoName Um membro de nível fica oculto quando seu nome está vazio.
    ParentName Um membro de nível fica oculto quando seu nome é idêntico ao de seu pai.

Defina a compatibilidade do MDX para determinar como os espaços reservados são exibidos em aplicativos cliente

Depois de definir HideMemberIf em um nível de hierarquia, você também deve definir a propriedade MDX Compatibility na cadeia de conexão enviada do aplicativo cliente. A MDX Compatibility configuração determina se a HideMemberIf é usada.

Configuração de compatibilidade do MDX Descrição Uso
1 Mostrar um valor de marcador de posição. Esse é o padrão usado pelo Excel, SSDT e SSMS. Ele instrui o servidor a retornar valores substitutos ao aprofundar níveis vazios em uma hierarquia irregular. Se você clicar no valor do espaço reservado, poderá continuar para baixo para acessar os nós filho (folha).

O Excel é responsável pela cadeia de conexão usada para se conectar ao Analysis Services e sempre define MDX Compatibility como 1 em cada nova conexão. Esse comportamento preserva a compatibilidade com versões anteriores.
2 Oculte um valor de espaço reservado (seja um valor nulo ou uma duplicata do nível superior), mas mostre outros níveis e nós com valores relevantes. MDX Compatibility=2 é normalmente visto como a configuração preferida em termos de hierarquias irregulares. Um relatório do Reporting Services e alguns aplicativos cliente de terceiros podem persistir essa configuração.

Consulte Também

Criar hierarquias de User-Defined
Hierarquias de usuário
Hierarquia deParent-Child
Propriedades da string de conexão (Serviços de Análise)