Hierarquia Pai-Filho (Parent-Child Hierarchy)

Publicado: 22/01/2013 por Felipe Idalgo em Modelagem de Dados
Tags:, ,

Fala Galera, tudo bom???

Gostaria primeiramente de desejar um ótimo 2013 a todos!!!!

Hoje estou aqui para falar sobre hierarquias do tipo pai-filho.

Este tipo de hierarquia se difere da baseada em nível pelo fato dos níveis não estarem dispostos em colunas separadas (níveis fixos), todos os níveis tem o mesmo tipo e estão dispostos em uma mesma coluna e seus níveis são definidos em tempo de execução.

Para a realização deste “LAB”, utilizaremos o modelo físico a seguir:

No modelo acima, minha dimensão de Classe possui uma hierarquia do tipo pai-filho definida pelas colunas SK_CLASSE (membros da hierarquia) e SK_CLASSE_PAI (definição nos níveis), utilizaremos estas 2 colunas para gerar a hierarquia.

Após todo o mapeamento pronto, clique sob a tabela lógica “DM Classe 1g” com o direito do mouse e crie uma dimensão lógica do tipo pai-fiho como exibido na imagem abaixo:

Passo-a-passo para configuração da hierarquia

1 – Defina o nome da sua hierarquia , qual coluna contém os membros (Member key) dessa hierarquia e qual coluna contém os níveis (Parent Column);

Obs.: por default o OBI preenche o seu member key com a chave primária da tabela de dimensão.

Caso queira alterá-lo, basta clica r em procurar a direita do campo “Member Key”.

E nessa nova tela, selecionar a chave desejada.

2 – Definir a coluna com a informação dos níveis

No nosso caso, a coluna que contém a informação dos níveis é a SK_CLASSE_PAI, para defini-la, clique em procurar a direita de Parent Column e selecione a coluna SK_CLASSE_PAI.

.

3 – Definição da Tabela de relacionamento pai-filho

A tabela de relacionamento pai-filho serve para resolver dinamicamente os níveis de sua hierarquia

Clique em configuração pai-filho.

Clique em criar uma nova tabela de relacionamento pai-filho.

Neste primeiro passo de definição da tabela de relacionamento pai-filho, vamos informar o nome e local para os scripts de criação e população desta tabela e após isso clique em “próximo”.

Informe o nome que terá a sua tabela de relacionamento, tanto no banco de dados como em seu repositório e clique em “próximo”.

Após essa definição, o OBI gera os scripts que deverão ser executados no banco de dados. Você pode visualiza-los no diretório de destino que informou acima ou clicando em “Exibir Script” como demonstrado abaixo.

Clique em “finalizar”.

Após a definição da tabela de relacionamento pai-filho, verifique se as colunas desta tabela foram referenciadas de forma correta.

Por padrão estas colunas são definidas da seguinte forma

MEMBER KEY – Chave do membro da hierarquia

ANCESTOR_KEY – Nível pai do membro da hierarquia

DISTANCE – Distância entre o membro da hierarquia e o membro pai

IS_LEAF – Flag que identifica se o membro é o ultimo nível da hierarquia

Clique em OK para concluir a criação da hierarquia.

Após a criação da hierarquia do tipo pai-filho, você poderá visualiza-la na camada lógica do seu repositório.

Confira também se sua tabela de relacionamento pai-filho foi criada na camada física como mostrado abaixo.

4 – Após a criação de sua hierarquia precisamos alterar o modelo para fazer a inclusão da tabela de relacionamento pai-filho

Selecione na camada física a dimensão de classe já existente, a tabela de relacionamento pai-filho que acabamos de criar, a tabela de fatos utilizada e exiba os relacionamento entre estas 3 tabelas.

Note que a tabela que acabamos de criar não está ligada a nenhuma outra tabela.

Precisamos então deletar a junção direta entre a dimensão de classe e a tabela de fatos e posicionar a tabela de relacionamento pai-filho entre as 2 outras

.

Crie agora um relacionamento entre a tabela de relacionamento pai-filho e a tabela de fatos utilizando a chave do membro da hierarquia e um relacionamento entre a tabela de dimensão e a tabela de relacionamento pai-filho utilizando a chave do pai do membro (ANCESTOR_KEY) de sua hierarquia como nas imagens abaixo:

.

Após realizado os joins, o relacionamento entre estas 3 tabelas deverá ficar como apresentado abaixo:

.

Após a conclusão das alterações na camada física, precisamos adicionar na LTS (Logical Table Source) de nossa tabela de dimensões a nossa tabela de relacionamento pai-filho.

Para isso, na camada lógica, expanda o source da tabela de dimensão DM Classe 1g e clique 2 vezes sobre a origem dela para editá-la.

Clique em adicionar uma tabela física a origem lógica

E, em seguida, selecione a tabela de relacionamento pai-filho que acabamos de criar

Clique em OK para finalizarmos os ajustes de modelo.

5 – Criação e carga da tabela de relacionamento pai-filho no banco de dados

Após os ajustes no modelo, temos que criar e popular nossa tabela de relacionamento pai-filho no banco de dados.

Execute primeiramente o script de criação da tabela, como segue abaixo.

Após a criação da tabela, execute o script de carga como segue abaixo

Obs.: a tabela deve ser criada no mesmo schema de banco usando no connection pool do seu modelo.

6 – Validação do Procedimento

Após disponibilizar nossa dimensão (hierarquia pai-filho) na camada de apresentação para que possamos utilizar o objeto em reports, prompts e etc, entre no OBI e renove os metadados

Se o procedimento foi executado com sucesso, poderemos então visualizar a hierarquia criada

Abraços

Felipe Idalgo

 

banner_treinamento

comentários
  1. Barbara disse:

    Seu blog é oteemooooo!

    • Felipe Idalgo disse:

      Ola Barbara,

      obrigado, fiquei um tempo afastado por conta de alguns problemas pessoais mas agora estou de volta a ativa, iniciarei uma série de posts sobre o OBIEE 12c.

      Abs

Deixe um comentário