Thiago Zavaschi R2 www.zavaschi.com

17Apr/121

Hierarquias no Analysis Services

Olá!

Hoje irei comentar um pouco sobre hierarquias no Analysis Services, seus benefícios e alguns dos parâmetros importantes quando definimos/criamos uma.

Os elementos que compõem uma dimensão são chamados de atributos. Estas dimensões são responsáveis por dar contexto às medidas (measures) numéricas contidas no cubo (total de vendas, quantidade de vendas ano sobre ano, entre outras de acordo com o seu negócio) e muitas vezes podem conter dezenas de atributos.

Com uma grande quantidade de atributos pode ser complicado a um usuário de uma ferramenta de análise (Excel por exemplo) navegar por estes atributos. Para facilitar esta navegação, podem ser criadas hierarquias dentro destas dimensões. Além de facilitar a navegação (drill down e drill up), o SSAS consegue se utilizar destas hierarquias (desde que os atributos tenham um relacionamento natural) para criar índices e agregações pré-calculadas e assim agilizar o tempo de resposta das queries dos usuários.

Por padrão todos os atributos são organizados em uma hierarquia de dois levels: o level “All” e o level folha. Esta hierarquia padrão pode ser desabilitada setando a opção IsAggregatable para falso (False).

Os tipos de hierarquias existentes são:

Hierarquias balanceadas (Balanced Hierarchies): neste tipo todos os ramos de uma hierarquia descendem de um mesmo level, e o “pai lógico” de cada membro é o level imediatamente superior.

Hierarquias não balanceadas (Unbalanced Hierarchies): os ramos descendem de levels diferentes.

Hierarquias pai-filho (Parent-Child Hierarchies): Hierarquias pai-filho são também hierarquias não balanceadas, pois a profundidade da hierarquia pode variar de acordo com o membro. E que também possuem um relacionamento de auto referência (self-referencing relashionship). O caso clássico desta hierarquia são em organogramas de empresas.

Hierarquias irregulares (Ragged Hierarchies): quando pelo menos o pai de um membro não esta no level imediatamente acima (e que não seja membro raiz, pois nesse caso não teria pai). Este tipo de hierarquia para o usuário final se parece com as do tipo pai-filho, porém os membros são de atributos diferentes.

Existem algumas propriedades muito importantes quando configuramos as dimensões (estas propriedades são setadas para os atributos da dimensão):

A primeira deles já comentamos que é se queremos ou não a utilização da hierarquia padrão: IsAggregatable.

Os próximos são:

AttributeHierarchyOrdered define se a hierarquia será ou não ordenada. Se estiver como falso (e se você apenas a utiliza para ordenar outra hierarquia de atributos) pode reduzir o tempo de processamento.

AttributeHierarchyOptimizedState pode ser configurado para NotOptimized para evitar qeu o SSAS crie indices nesta hierarquia de atributos. Diminui o tempo de processamento, mas irá aumentar o tempo de execução das queries que a utilizam (efeito gangorra).

AttributeHierarchyEnabled se esta propriedade estiver como falso a hierarquia de atributos será desabilitada e o SSAS criará como membro. É útil quando o atributo provê informações, mas você não quer usá-lo como level de agregação.

AttributeHierarchyVisible se essa propriedade estiver como falsa, o atributo só será visível em hierarquias definidas pelo usuário (user-defined hierarchies). Mesmo como falso ainda pode ser referenciado em expressões MDX.


Não preciso dizer que com grandes poderes vêm grandes responsabilidades né? Use estas configurações sabiamente e testem para ver os reais impactos e benefícios!

Bom pessoal, era isso por hoje!

[]s,
Thiago Zavaschi

Comments (1) Trackbacks (0)
  1. Muito legal, eu estava com duvida nesse assunto, porem uma duvida minha ainda se mantem, você poderia me ajudar com minha duvida ? Caso sim, devo perguntar aqui em sua pagina ou você acha melhor que seja por e-mail?


Leave a comment


No trackbacks yet.