Noções básicas sobre funções para hierarquias pai-filho no DAX

O DAX fornece cinco funções para ajudar os usuários a gerenciar dados que são apresentados como uma hierarquia pai-filho em seus modelos. Com essas funções, um usuário pode obter toda a linhagem de pais que uma linha tem, quantos níveis tem a linhagem para o pai superior, quem é o pai n níveis acima da linha atual, quem é o n descendente do topo da hierarquia de linha atual e é determinado pai um pai na hierarquia de linha atual?

Funções pai-filho no DAX

A tabela a seguir contém uma hierarquia pai-filho nas colunas: EmployeeKey e ParentEmployeeKey que é usada em todos os exemplos de funções.

EmployeeKey ParentEmployeeKey
112
14 112
3 14
11 3
13 3
162 3
117 162
221 162
81 162

Na tabela acima, você pode ver que o funcionário 112 não tem pai definido, o funcionário 14 tem o funcionário 112 como gerente (ParentEmployeeKey), o funcionário 3 tem o funcionário 14 como gerente e os funcionários 11, 13 e 162 têm o funcionário 3 como gerente. O acima exposto ajuda a entender que o funcionário 112 não tem um gerente acima dele e ele/ela é o gerente de topo para todos os funcionários mostrados aqui; Além disso, o funcionário 3 reporta ao funcionário 14 e os funcionários 11, 13, 162 reportam a 3.

A tabela a seguir apresenta as funções disponíveis, uma breve descrição da função e um exemplo da função sobre os mesmos dados mostrados acima.

Função PATH - Devolve um texto delimitado com os identificadores de todos os pais para a linha atual, começando com a mais antiga ou superior até à atual.

EmployeeKey ParentEmployeeKey Caminho
112 112
14 112 112|14
3 14 112|14|3
11 3 112|14|3|11
13 3 112|14|3|13
162 3 112|14|3|162
117 162 112|14|3|162|117
221 162 112|14|3|162|221
81 162 112|14|3|162|81

Função PATHLENGTH - Devolve o número de níveis num determinado PATH(), começando no nível atual até ao nível mais antigo ou superior mais pai. No exemplo a seguir, a coluna PathLength é definida como ''= PATHLENGTH([Path]); o exemplo inclui todos os dados do exemplo Path() para ajudar a entender como essa função funciona.

EmployeeKey ParentEmployeeKey Caminho PathLength
112 112 1
14 112 112|14 2
3 14 112|14|3 3
11 3 112|14|3|11 4
13 3 112|14|3|13 4
162 3 112|14|3|162 4
117 162 112|14|3|162|117 5
221 162 112|14|3|162|221 5
81 162 112|14|3|162|81 5

Função PATHITEM - Devolve o item na posição especificada a partir de um resultado semelhante a PATH(), contando da esquerda para a direita. No exemplo a seguir, a coluna PathItem - 4th da esquerda é definida como ''= PATHITEM([Path], 4); este exemplo retorna o EmployeKey na quarta posição na cadeia de caracteres Path da esquerda, usando os mesmos dados de exemplo do exemplo Path().

EmployeeKey ParentEmployeeKey Caminho PathItem - 4º a partir da esquerda
112 112
14 112 112|14
3 14 112|14|3
11 3 112|14|3|11 11
13 3 112|14|3|13 13
162 3 112|14|3|162 162
117 162 112|14|3|162|117 162
221 162 112|14|3|162|221 162
81 162 112|14|3|162|81 162

Função PATHITEMREVERSE - Devolve o item na posição a partir de um resultado de função semelhante a PATH(), contando para trás da direita para a esquerda.
No exemplo a seguir, a coluna PathItemReverse - 3ª da direita é definida como ''= PATHITEMREVERSE([Path], 3); este exemplo retorna o EmployeKey na terceira posição na cadeia de caracteres Path da direita, usando os mesmos dados de exemplo do exemplo Path().

EmployeeKey ParentEmployeeKey Caminho PathItemReverse - 3º da direita
112 112
14 112 112|14
3 14 112|14|3 112
11 3 112|14|3|11 14
13 3 112|14|3|13 14
162 3 112|14|3|162 14
117 162 112|14|3|162|117 3
221 162 112|14|3|162|221 3
81 162 112|14|3|162|81 3

Função PATHCONTAINS - Retorna TRUE se o item especificado existir dentro do caminho especificado. No exemplo a seguir, a coluna PathContains - employee 162 é definida como ''= PATHCONTAINS([Path], "162"); este exemplo retorna TRUE se o caminho fornecido contiver employee 162. Este exemplo usa os resultados do exemplo Path() acima.

EmployeeKey ParentEmployeeKey Caminho PathContains - funcionário 162
112 112 FALSE
14 112 112|14 FALSE
3 14 112|14|3 FALSE
11 3 112|14|3|11 FALSE
13 3 112|14|3|13 FALSE
162 3 112|14|3|162 TRUE
117 162 112|14|3|162|117 TRUE