Compartilhar via


Hierarquias desbalanceadas

Uma hierarquia desbalanceada é uma hierarquia definida pelo usuário que tem um número irregular de níveis. Exemplos comuns incluem um gráfico organizacional onde um gerente de alto nível tem gerentes departamentais e funcionários não gerentes como subordinados diretos, ou hierarquias geográficas compostas de País-Região-Cidade, 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 que qualquer outro membro do mesmo nível. Uma hierarquia desbalanceada é diferente, pois o pai lógico de pelo menos um membro não está no nível imediatamente acima do membro. Quando isso acontece, a hierarquia desce a níveis diferentes para caminhos de busca detalhada diferentes. Em um aplicativo cliente, isso pode complicar desnecessariamente caminhos de busca detalhada.

Aplicativos cliente variam de acordo com sua capacidade de lidar com uma hierarquia desbalanceada. Se existem hierarquias desbalanceadas em seu modelo, prepare-se para um esforço adicional para obter o comportamento de renderização esperado.

A primeira etapa é verificar o aplicativo cliente para ver como ele trata o caminho de busca detalhada. Por exemplo, o Excel repete os nomes pai como espaços reservados para valores ausentes. Para ver esse comportamento, crie uma Tabela Dinâmica usando a dimensão Sales Territory no modelo multidimensional do Adventure Works. Em uma Tabela Dinâmica com Grupo, País e Região, que são os atributos de Região de Vendas, note que os países sem um valor de região obterão um espaço reservado; nesse caso, uma repetição do pai acima dele (nome do País). Esse comportamento deriva da propriedade de cadeia de conexão MDX Compatibility=1 que é fixa no Excel. Se o cliente não fornecer naturalmente os comportamentos de busca detalhada que você procura, defina 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 desbalanceada

  • Definir HideMemberIf para ocultar membros em uma hierarquia desbalanceada

  • Definir MDX Compatibility para determinar como os espaços reservados são representados em aplicativos cliente

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

A presença de uma hierarquia desbalanceada se torna um problema quando a navegação detalhada não retorna valores esperados ou é vista como um uso inadequado. Para corrigir problemas de navegação que resultam de hierarquias desbalanceadas, considere estas opções:

  • Use uma hierarquia regular, mas defina a propriedade HideMemberIf em cada nível para especificar se um nível ausente é visualizado pelo usuário. Ao definir HideMemberIf, defina também MDXCompatibility na cadeia de conexão para substituir os comportamentos de navegação padrão. As instruções para definir essas propriedades se encontram 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 Ragged Hierarchy in SSAS (postagem de blog). Para obter mais informações nos Manuais Online, consulte Dimensões pai-filho. As desvantagens de criar uma hierarquia pai-filho consistem em você ter apenas uma por dimensão e, normalmente, em impacto no desempenho ao calcular agregações para membros intermediários.

Se a dimensão contiver mais de uma hierarquia desbalanceada, use a primeira abordagem, definindo HideMemberIf. Desenvolvedores de BI com experiência prática no trabalho com hierarquias desbalanceadas defendem ainda mais alterações nas tabelas de dados físicas, criando tabelas separadas para cada nível. Consulte Martin Mason's the SSAS Financial Cube–Part 1a–Ragged Hierarchies (blog) para obter detalhes sobre essa técnica.

Definir HideMemberIf para ocultar membros em uma hierarquia desbalanceada

Na tabela de uma dimensão imperfeita, os membros logicamente ausentes podem ser representados de formas diferentes. As células da tabela podem conter cadeias de caracteres nulas ou vazias ou podem conter o mesmo valor que o pai, servindo como espaço reservado. A representação de espaços reservados é determinada pelo status de espaço reservado dos membros filho, conforme determinado pela propriedade HideMemberIf e pela propriedade de cadeia de conexão MDX Compatibility do aplicativo cliente.

Para aplicativos cliente que oferecem suporte à exibição de hierarquias desbalanceadas, é possível 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 da Dimensão, mostra hierarquias de atributos no painel Hierarquias.

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

    Configuração de HideMemberIf

    Descrição

    Never

    Os membros do nível nunca são ocultos. Este é o valor padrão.

    OnlyChildWithNoName

    Um membro do nível ficará oculto quando for o único filho de seu pai e seu nome for uma cadeia de caracteres nula ou vazia.

    OnlyChildWithParentName

    Um membro do nível ficará oculto quando for o único filho de seu pai e seu for nome idêntico ao nome do pai.

    NoName

    Um membro do nível ficará oculto quando seu nome estiver vazio.

    ParentName

    Um membro do nível ficará oculto quando seu nome for idêntico ao de seu pai.

Definir MDX Compatibility para determinar como os espaços reservados são representados em aplicativos cliente

Após definir HideMemberIf em um nível de hierarquia, defina também a propriedade MDX Compatibility na cadeia de conexão enviada do aplicativo cliente. A definição MDX Compatibility determina se o HideMemberIf é usado.

Definição de MDX Compatibility

Descrição

Uso

1

Mostrar um valor de espaço reservado.

Esse é o padrão usado pelo Excel, pelo SSDT e pelo SSMS. Ele orienta o servidor a retornar valores de espaço reservado ao detalhar níveis vazios em uma hierarquia desbalanceada. Se você clicar no valor de espaço reservado, poderá continuar até obter os nós filho (folha)

O Excel tem a cadeia de conexão usada para conectar-se ao Analysis Services, e ele 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 (um valor nulo ou uma duplicata do nível pai), mas mostre outros níveis e nós com valores relevantes.

MDX Compatibility=2 costuma ser visto como a configuração preferencial em termos de hierarquias desbalanceadas. Um relatório Reporting Services e alguns aplicativos cliente de terceiros talvez persistam nessa configuração.

Consulte também

Conceitos

Criar hierarquias definidas pelo usuário

Hierarquias do usuário

Dimensões pai-filho

Propriedades de cadeia de conexão (Analysis Services)