PowerBI: Path Functions

1 minuto(s) de leitura

Uma vez que eu organizei uma tabela usando as funções de HierarchyId, é possível reproduzir a hierarquia no Power BI, utilizando as funções Path.

Inicialmente criamos duas colunas básicas, contendo o path e a profundidade dos assuntos, ou seja, quantos níveis existem?!

Calc__Path = PATH('Assuntos CNMP'[IdAssuntoCNMP], 'Assuntos CNMP'[IdPaiCNMP])
Calc__Lenght = PATHLENGTH ('Assuntos CNMP'[Calc__Path])


A partir do número de níveis existentes, é possível criar uma sequência de funções DAX para resolver o problemas

Calc_Level1 = LOOKUPVALUE(
    'Assuntos CNMP'[AssuntoId],
    'Assuntos CNMP'[IdAssuntoCNMP], PATHITEM ( 'Assuntos CNMP'[Calc__Path], 1, INTEGER )
)

Calc_Level2 =
IF ( PATHLENGTH ('Assuntos CNMP'[Calc__Path]) >= 2,
LOOKUPVALUE(
    'Assuntos CNMP'[AssuntoId],
    'Assuntos CNMP'[IdAssuntoCNMP], PATHITEM ('Assuntos CNMP'[Calc__Path], 2, INTEGER )
),
BLANK()
)

Calc_Level3 =
IF ( PATHLENGTH ('Assuntos CNMP'[Calc__Path]) >= 3,
LOOKUPVALUE(
    'Assuntos CNMP'[AssuntoId],
    'Assuntos CNMP'[IdAssuntoCNMP], PATHITEM ('Assuntos CNMP'[Calc__Path], 3, INTEGER )
),
BLANK()
)

Calc_Level4 =
IF ( PATHLENGTH ('Assuntos CNMP'[Calc__Path]) >= 4,
LOOKUPVALUE(
    'Assuntos CNMP'[AssuntoId],
    'Assuntos CNMP'[IdAssuntoCNMP], PATHITEM ('Assuntos CNMP'[Calc__Path], 4, INTEGER )
),
BLANK()
)

Calc_Level5 =
IF ( PATHLENGTH ('Assuntos CNMP'[Calc__Path]) >= 5,
LOOKUPVALUE(
    'Assuntos CNMP'[AssuntoId],
    'Assuntos CNMP'[IdAssuntoCNMP], PATHITEM ( 'Assuntos CNMP'[Calc__Path], 5, INTEGER )
),
BLANK()
)

Calc_Level6 =
IF ( PATHLENGTH ('Assuntos CNMP'[Calc__Path]) >= 6,
LOOKUPVALUE(
    'Assuntos CNMP'[AssuntoId],
    'Assuntos CNMP'[IdAssuntoCNMP], PATHITEM ( 'Assuntos CNMP'[Calc__Path], 6, INTEGER )
),
BLANK()
)

Calc_Level7 =
IF ( PATHLENGTH ('Assuntos CNMP'[Calc__Path]) >= 7,
LOOKUPVALUE(
    'Assuntos CNMP'[AssuntoId],
    'Assuntos CNMP'[IdAssuntoCNMP], PATHITEM ( 'Assuntos CNMP'[Calc__Path], 7, INTEGER )
),
BLANK()
)

Calc_Level8 =
IF ( PATHLENGTH ('Assuntos CNMP'[Calc__Path]) >= 8,
LOOKUPVALUE(
    'Assuntos CNMP'[AssuntoId],
    'Assuntos CNMP'[IdAssuntoCNMP], PATHITEM ( 'Assuntos CNMP'[Calc__Path], 8, INTEGER )
),
BLANK()
)


DAX’s PATH function equivalent Custom Column in Power Query

Uma vez construída essa tabela, é possível criar uma segmentação de dados utilizando um plugin que remove os blanks. O plugin se chama Hierarchy Slicer.

Tomei conhecimento dele através do vídeo Handling Empty Members and Ragged Hierarchies in a Hierarchy Slicer, do canal @HavensConsulting. Esse canal também apresentou um vídeo sobre o tema, utilizando uma segmentação de dados “nativa” do Power BI. Contudo, não atende plenamente devido aos “brancos”.

O repositório do GitHub é o azurebi-docs.

TODO: Preciso descobrir como colocar o campo de pesquisa.

Deixe um comentário