PowerBI: Path Functions
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