Começaremos com Hierarquias Recursivas. Vale lembrar que esta técnica serve para outras ferramentas. Recentemente implementei também em um projeto Tableau.
Vou utilizar para exemplo, parte de um plano de contas fictício. Imagine a seguinte estrutura:
Observe como a tabela é preenchida:
Veja que todos os níveis estão na mesma tabela. Para fazer o mapeamento no Microstrategy ou em outra ferramenta, você precisará inicialmente saber o número de níveis existentes no modelo, no caso, são 3 níveis. Cada um dos níveis será isolado em uma view, seja uma Logical View no Microstrategy ou uma Database View, formando a seguinte estrutura:
Nível 1:
SELECT ID_CONTA AS ID_NIVEL_1,
DS_CONTA AS DS_NIVEL_1
FROM dim_Plano_Conta
WHERE ID_NIVEL_CONTA=1;
Sem o campo ID_NIVEL_CONTA :
SELECT ID_CONTA AS ID_NIVEL_1,
DS_CONTA AS DS_NIVEL_1
FROM dim_Plano_Conta
WHERE ID_CONTA_PAI IS NULL
DS_CONTA AS DS_NIVEL_1
FROM dim_Plano_Conta
WHERE ID_CONTA_PAI IS NULL
Nível 2:
SELECT ID_CONTA AS ID_NIVEL_2,
DS_CONTA AS DS_NIVEL_2,
ID_CONTA_PAI AS ID_NIVEL_1
FROM dim_Plano_Conta
WHERE ID_NIVEL_CONTA=2;
Sem o campo ID_NIVEL_CONTA :
SELECT ID_CONTA AS ID_NIVEL_2,
DS_CONTA AS DS_NIVEL_2,
ID_CONTA_PAI AS ID_NIVEL_1
FROM dim_Plano_Conta N2,
inner join dim_Plano_Conta N1
on N2.ID_CONTA_PAI = N1.ID_CONTA
WHERE N1.ID_CONTA_PAI IS NULL;
Nível 3:
SELECT ID_CONTA AS ID_NIVEL_3,
DS_CONTA AS DS_NIVEL_3,
ID_CONTA_PAI AS ID_NIVEL_2
FROM dim_Plano_Conta
WHERE ID_NIVEL_CONTA=3;
Sem o campo ID_NIVEL_CONTA :
SELECT ID_CONTA AS ID_NIVEL_3,
DS_CONTA AS DS_NIVEL_3,
ID_CONTA_PAI AS ID_NIVEL_2
FROM dim_Plano_Conta N3,
inner join dim_Plano_Conta N2
on N3.ID_CONTA_PAI = N2.ID_CONTA
inner join dim_Plano_Conta N1
on N2.ID_CONTA_PAI = N1.ID_CONTA
WHERE N1.ID_CONTA_PAI IS NULL;
Depois faça o mapeamento de cada view no Microstrategy como um atributo.
Defina o Nível 2 como filho do Nível 1, e o Nível 3 como filho do Nível 2. Também defina o relacionamento do Nível 3 com a fato. Depois é só inserir os atributos e montar o relatório:
E assim finalizamos o artigo. Existe também uma maneira de implementar quando o número de níveis não é conhecido. Porém exige um capítulo aparte e eu não vejo muito sua eficácia como este método.
Obrigado
Fabio Idalgo
Obrigado
Fabio Idalgo
Nenhum comentário:
Postar um comentário