Nos últimos dias na comunidade surgiu uma questão de como se poderia obter uma listagem de produtos que eram posteriores a um produto pesquisado. Tratava-se de uma lista de artigos com uma estrutura de pai/filho em que cada registo tinha correspondência com um artigo anterior.
O objetivo era localizar todos os artigos que sucediam ao artigo procurado, sendo que o formato dos dados nos permitia fazer utilização da fórmula PATH.
A informação era a seguinte:

Como se pode verificar, temos a identificação do artigo antecessor e do seguinte, no entanto para a solução apenas necessitamos do antecessor, que neste caso vai ser o nosso “pai”.
Assim utilizando a função PATH podemos adicionar uma nova coluna aos nossos dados:
Products path = PATH(Products[Product], Products[predecessor])

A função PATH (caminho) retorna uma cadeia de texto delimitada com os identificadores de todos os pais do identificador atual, começando com o mais antigo e continuando até o atual.
Ao analisarmos a coluna correspondente vemos que temos identificados todos os artigos que antecedem o produto em questão, se por exemplo pegarmos no artigo 134 vemos que o mesmo é precedido pelo 133 e 132, temos assim a nossa hierarquia de artigos.
Para podermos encontrar os artigos que sucedem a um determinado registo temos agora de criar uma tabela não relacionada com a nossa listagem de artigos, esta permitirá criar um slicer para realizar a pesquisa.
A tabela pode ser criada em DAX ou no Power Query, e adicionamos a seguinte medida:
Find products =
SUMX (
ADDCOLUMNS (
'Products Search',
"ProductsTotal",
COUNTROWS (
FILTER ( Products, FIND ( 'Products Search'[Products], Products[Products path],, 0 ) )
)
),
[ProductsTotal]
)
Com a utilização da função FIND podemos identificar as linhas onde os artigos procurados estão na coluna do PATH, ao encontrarmos essas linhas podemos então filtrar a nossa tabela contar o total de linhas em que esse artigo está presente.
O resultado é o seguinte:

O artigo 134 que tem 3 artigos identificados na coluna do Products Path tem um total de 3 para Find Products assim logo podemos verificar que a contagem dos artigos, ao realizarmos um filtro no nosso slicer o resultado:


O artigo 115 apenas está presente numa das linhas, enquanto o 114 está identificado 3 a informação pode ser validada pela coluna Product Path.
Agora utilizando o Find Products como filtro podes ter o resultado final da nossa pesquisa:

Na pergunta da comunidade a necessidade era de encontrar apenas os artigos ativos pelo que modificamos a nossa função para:
Find products =
SUMX (
ADDCOLUMNS (
'Products Search',
"ProductsTotal",
COUNTROWS (
FILTER ( Products, FIND ( 'Products Search'[Products], Products[Products path],, 0 ) && Products[Status] = "Active")
)
),
[ProductsTotal]
)
