Si se tiene una tabla Padre-Hijo (o From-To, Sender-Receiver, Cuenta-Traspaso, etc.) y se quiere obtener una tabla que identifique todas las descendencias y otra que identifica la descendencia originaria, teniando algo como:
Esto se puede lograr usando la funcion
Hierarchy en el script de Qlikview. Un ejemplo es el siguiente siguiente script:
// --ORIGEN DE DATOS
// -----------------------------------------------------
SourceData:
LOAD * INLINE [
PADRE, HIJO
Juan, Jose_JuanHijo
Jose_JuanHijo, Mario_JuanNieto
Mario_JuanNieto, Manuel_JuanBisnieto
Alberto, Maria_AlbertoHija
Maria_AlbertoHija, Susana_AlbertoNieta
Susana_AlbertoNieta, Bety_AlbertoBisnieta
Lucio, Ismael_LucioHijo
Ismael_LucioHijo, Luis_LucioNieto
Luis_LucioNieto, Jesus_LucioBisnieto
Ana, Isabel_AnaHija
Isabel_AnaHija, Lili_AnaNieta
Nicolas, Fran_NicolasHijo];
// --Tabla Descendencia
// -----------------------------------------------------
Filogenia:
Hierarchy(NodeID, ParentID, Descendencia, ParentName, NodeName, PathName, '\', Depth)
Load
HIJO AS NodeID,
HIJO AS NodeName,
HIJO as Descendencia,
PADRE as ParentID
resident SourceData;
Left Join(Filogenia)
LOAD Distinct
NodeName as Descendencia1,
ParentID as Pariente_Originario
Resident Filogenia Where Depth=1;
// --Crea tabla con primera descendencia
// ---------------------------------------------------
Descendencia_Origen:
LOAD Distinct
Pariente_Originario,
Descendencia as Pariente,
Depth as Cercania
Resident Filogenia;
// --Filtra tabla Filogenia
// ---------------------------------------------------
Inner Join(Filogenia)
LOAD
Descendencia1,
max(Depth) as Depth
Resident Filogenia
Group By Descendencia1;
DROP Fields NodeName, Descendencia, NodeName, PathName, NodeID, ParentID, ParentName, Depth;
EXIT SCRIPT
Referencias
https://community.qlik.com/blogs/qlikviewdesignblog/2013/11/11/unbalanced-n-level-hierarchies
https://community.qlik.com/thread/46580
No hay comentarios:
Publicar un comentario