Este tipo de dimensão pode aparecer em projetos que trabalham com listas de materiais que possuem subcomponentes, em sistemas corporativos que organizam os recursos humanos em estrutura organizacionais, em contas contábeis, etc..
Os projetos criados com o modelo tradicional do analysis services multidimensional (MDX) já possuem uma configuração nativa para tratar este tipo de dimensão, basta configurar corretamente as propriedades para que funcione.
Configuração das propriedades da dimensão |
Visualizando a dimensão |
Porém, com modelos tabulares criados com DAX esse suporte nativo não existe. Para obter uma hierarquia navegável no modelo de dados, você precisa decompor os níveis até um determinado ponto para obter uma hierarquia pai-filho.
Para isso o DAX fornece funções específicas para trabalhar com uma hierarquia pai-filho usando colunas calculadas.
Hierarquias Pai-Filho em DAX
A hierarquia é implementada utilizando as funções do grupo PATH.
PATH
PATHCONTAINS
PATHITEM
PATHITEMREVERSE
PATHLENGTH
Dados de Exemplo: Este exemplo será feito com base nesta tabela, onde o código da coluna gerente é o código pai.
1-Identificar o caminho completo:
Utiliza a coluna Gerente para referenciar todas as relações e retornar uma string com o caminho completo com todos os níveis superiores.Neste exemplo, existe uma coluna com a hierarquia já criada, em algumas fontes de dados isso pode existir, se esse for o caso, o primeiro passo pode ser substituído por esta função.
2-Descobrindo o tamanho do caminho:
Utilizar a função PATHLENGTH para identificar o tamanho. Esse valor será útil para identificar quantos níveis devem ser criados.3-Criando os níveis:
Nível 1: Utilizar PARENTITEM para localizar o código do nivel 1 e fornecer o parâmetro para LOOKUPVALUE localizar o nome do profissional.Nível 2: A partir do nível 2 é necessário fazer uma verificação no tamanho.
O processo se repete para quantos níveis forem necessários.
O resultado final pode ser observado em um filtro ou em uma matrix.
Fonte:
https://docs.microsoft.com/en-us/dax/parent-and-child-functions- dax
https://www.daxpatterns.com/parent-child-hierarchies/
https://docs.microsoft.com/en-us/dax/understanding-functions- for-parent-child- hierarchies-in-dax
https://www.youtube.com/watch?v=QFKTr8tAQXE&list=PLWfPHxJoa7zthSaAMlt0JkJpFeVtdHzq6&index=42
Muito bom o conteúdo Leandro. Estou tentando implementar o mesmo conceito de hierarquia com um plano de contas contábil de 5 níveis, onde:
ResponderExcluirN1 - 1 dígito
N2 - 1 dígitos
N3 - 2 dígitos
N4 - 2 dígitos
N5 - 2 dígitos
Exemplo:
1 ATIVO
1.1 ATIVO CIRCULANTE
1.1.01 CAIXA E EQUIVALENTES DE CAIXA
1.1.01.01 CAIXAS
1.1.01.01.01 CAIXA LOJA
No banco de dados cada conta já contém a estrutura sem a separação por PONTO. Sei que o exemplo do vídeo é bem parecido, mas estou com dificuldade em montar o mesmo cenário, creio que não preciso utilizar a PATH para determinar a hierarquia mas não tenho certeza.
Será que você consegue fazer um exemplo com este cenário?
Abraço
Leandro, tentei essa solução para produtos que possuem vários "pais" e a função path não aceita, ex.: tenho 10 produtos pais que possui 1 mesmo subproduto filho. Sabe me dizer a solução que devo recorrer?
ResponderExcluir