Hierarquias do usuário

Hierarquias definidas pelo usuário são hierarquias de atributos usadas no Microsoft SQL Server Analysis Services para organizar os membros da dimensão em estruturas hierárquicas e fornecer caminhos de navegação em um cubo. Por exemplo, a tabela a seguir define uma tabela de dimensões para uma dimensão temporal. A tabela de dimensão oferece suporte para três atributos nomeados, Ano, Trimestre e Mês.

Ano

Trimestre

Mês

1999

1º Trimestre

Jan

1999

1º Trimestre

Fev

1999

1º Trimestre

Mar

1999

2º Trimestre

Abr

1999

2º Trimestre

Mai

1999

2º Trimestre

Jun

1999

3º Trimestre

Jul

1999

3º Trimestre

Ago

1999

3º Trimestre

Set

1999

4º Trimestre

Out

1999

4º Trimestre

Nov

1999

4º Trimestre

Dez

São usados os atributos Ano, Trimestre e Mês para criar uma hierarquia definida pelo usuário, nomeado Calendário, na dimensão temporal. A relação entre os níveis e membros da dimensão Calendário (uma dimensão comum) é mostrada no diagrama a seguir.

Hierarquia de níveis e membros para uma dimensão de tempo

ObservaçãoObservação

Toda hierarquia diferente da hierarquia de atributo de dois níveis padrão é chamada de hierarquia definida pelo usuário. Para obter mais informações sobre hierarquias, consulteAtributos e hierarquias de atributos.

Estruturas de membro

Com exceção das hierarquias pai-filho, as posições de membros dentro da hierarquia são controladas pela ordem dos atributos na definição de hierarquia. Cada atributo na definição de hierarquia constitui um nível na hierarquia. A posição de um membro dentro de um nível é determinada pela ordem do atributo usada para criar o nível. As estruturas de membro de hierarquias definidas pelo usuário podem ter uma de quatro formas básicas, dependendo de como os membros estão relacionados entre si.

Hierarquias equilibradas

Em uma hierarquia equilibrada, todas as ramificações da hierarquia decrescem do mesmo nível e cada pai lógico do membro está no nível imediatamente acima do membro. A hierarquia Categorias de Produtos da dimensão Produto no exemplo Adventure Works DW do banco de dados Analysis Services é um exemplo de hierarquia equilibrada. Cada membro no nível Nome do Produto tem um membro pai no nível Subcategoria que, por sua vez, tem um membro pai no nível Categoria. Além disso, toda ramificação na hierarquia tem um membro folha no nível Nome do Produto.

Hierarquias desbalanceadas

Em uma hierarquia desbalanceada, ramificações da hierarquia decresce para níveis diferentes. As hierarquias pai-filho são hierarquias desbalanceadas. Por exemplo, a dimensão Organização no exemplo Adventure Works DW do banco de dados Analysis Services contém um membro para cada funcionário. O CEO é o membro que ocupa o lugar no topo da hierarquia e os gerentes de divisão e secretária executiva estão imediatamente abaixo do CEO. Os gerentes de divisão têm membros subordinados, mas a secretária executiva não.

Pode ser impossível para usuários finais distinguirem entre hierarquias desbalanceadas e imperfeitas. Entretanto, você emprega técnicas e propriedades diferentes no Analysis Services para oferecer suporte a esses dois tipos de hierarquias. Para obter mais informações, consulte Trabalhando com hierarquias imperfeitas e Trabalhando com atributos em hierarquias pai-filho.

Hierarquias imperfeitas

Em uma hierarquia imperfeita, o membro pai lógico de pelo menos um membro não está no nível imediatamente acima do membro. Isso pode fazer com que ramificações da hierarquia decresçam a níveis diferentes. Por exemplo, em uma dimensão Geografia definida com os níveis Continente, PaísRegião e Cidade, nessa ordem o membro Europa aparece no nível mais alto da hierarquia, o membro França aparece no nível intermediária e o membro Paris aparece no nível mais baixo. França é mais específico que a Europa e Paris é mais específico que França. Para essa hierarquia regular, as seguintes alterações são feitas:

  • A Cidade do Vaticano é adicionada para o nível PaísRegião.

  • Os membros são adicionados para o nível Cidade e são associados ao membro Cidade do Vaticano no nível de PaísRegião.

  • Um nível, noemado Província, é adicionado entre os níveis PaísRegião e Cidade.

O nível Província é populado com membros associados a outros membros no nível PaísRegião e os membros no nível Cidade são associados a seus membros correspondentes no nível Província. Entretanto, como o membro Cidade do Vaticano no nível PaísRegião não possui membros associados no nível Província, os membros devem ser associados do nível Cidade diretamente ao membro Cidade do Vaticano no nível PaísRegião. Devido às alterações, a hierarquia da dimensão está agora imperfeita. O pai de Cidade do Vaticano é a região/país Cidade do Vaticano, que não está imediatamente no nível acima do membro Cidade do Vaticano no nível Cidade. Para obter mais informações, consulte Trabalhando com hierarquias imperfeitas.

Hierarquias pai-filho

As hierarquias pai-filho de dimensões são definidas usando um atributo especial, chamado de atributo pai, para determinar como os membros relacionam-se entre si. Um atributo pai descreve uma relação de auto-referência ou autojunção em uma tabela principal da dimensão. As hierarquias filho são criadas a partir de um único atributo pai. Somente um nível é atribuído a uma hierarquia pai-filho, pois os níveis existentes na hierarquia são extraídos das relações pai-filho entre os membros associados ao atributo pai. O esquema de dimensão de uma hierarquia pai-filho depende de uma relação de auto-referência existente na tabela principal da dimensão. Por exemplo, o diagrama a seguir ilustra a tabela principal da dimensão DimOrganization no banco de dados de exemplo AdventureWorksDWAnalysis Services.

Junção autorreferenciável na tabela DimOrganization

Nessa tabela de dimensão, a coluna ParentOrganizationKey tem uma relação de chave estangeira com a coluna da chave primária OrganizationKey. Em outras palavras, cada registro dessa tabela pode ser relacionado por meio de uma relação pai-filho com outro registro da tabela. Geralmente, esse tipo de autojunção é usado para representar os dados de uma empresa, como a estrutura de gerenciamento dos funcionários de um departamento.

Quando você cria uma hierarquia pai-filho, as colunas representadas por ambos os atributos devem ter o mesmo tipo de dados. Ambos os atributos também devem estar na mesma tabela. Por padrão, todo membro cuja chave pai é igual à sua própria chave de membro, nulo, 0 (zero) ou um valor ausente da coluna para as chaves de membro, é assumido como um membro no nível mais alto (excluindo o nível Todos).

A profundidade de uma hierarquia pai-filho pode variar entre suas ramificações hierárquicas. Em outras palavras, uma hierarquia pai-filho é considerada uma hierarquia desbalanceada.

Diferentemente de hierarquias definidas pelo usuário, na qual o número de níveis na hierarquia determina o número de níveis que podem ser visualizados por usuários finais, uma hierarquia pai-filho é definida com o único nível de uma hierarquia de atributo e os valores nesse único nível produzem os vários níveis visualizados por usuários. O número de níveis exibidos depende do conteúdo das colunas da tabela de dimensões que armazenam as chaves de membro e as chaves de pai. O número de níveis pode ser alterado quando os dados nas tabelas de dimensões alteram. Para obter mais informações, consulte Definindo uma hierarquia pai-filho e Trabalhando com atributos em hierarquias pai-filho.