HierarchyBelongsTo
Esse prefixo é usado para transformar uma tabela de hierarquia pai-filho em uma tabela que seja útil em um modelo de dados do QlikView. Ele pode ser colocado na frente de um comando LOAD ou SELECT e usará o resultado do comando de carregamento como entrada para uma transformação de tabela.
O prefixo cria uma tabela que contém todas as relações entre filho e ancestral da hierarquia. Então, os campos de ancestral podem ser usados para selecionar árvores inteiras da hierarquia. A tabela de saída quase sempre contém vários registros por nó.
Sintaxe:
HierarchyBelongsTo (NodeID, ParentID, NodeName, AncestorID, AncestorName, [DepthDiff])(loadstatement | selectstatement)
A tabela de entrada deve ser uma tabela de nós adjacentes. As tabelas de nós adjacentes são tabelas em que cada registro corresponde a um nó e tem um campo que contém uma referência para o nó pai. Em uma tabela como essa, o nó é armazenado em apenas um registro, mas o nó ainda pode ter um número indefinido de filhos. A tabela pode conter campos adicionais que descrevem atributos para os nós.
Um campo adicional que contém a diferença de profundidade dos nós pode ser criado.
Argumentos:
Argumento | Descrição |
---|---|
NodeID | O nome do campo que contém a id do nó. O campo deve existir na tabela de entrada. |
ParentID | O nome do campo que contém a id do nó do nó pai. O campo deve existir na tabela de entrada. |
NodeName | O nome do campo que contém o nome do nó. O campo deve existir na tabela de entrada. |
AncestorID | Uma string usada para atribuir um nome a um novo campo da id do ancestral, que contém a id do nó do ancestral. |
AncestorName | Uma string usada para atribuir um nome a um novo campo de ancestral, que contém o nome do nó do ancestral. |
DepthDiff | Uma string usada para atribuir um nome ao novo campo DepthDiff, que contém a profundidade do nó na hierarquia em relação ao nó do ancestral. Parâmetro opcional. Se omitido, esse campo não será criado. |
Exemplo:
HierarchyBelongsTo (NodeID, AncestorID, NodeName, AncestorID, AncestorName, DepthDiff) LOAD * inline [
NodeID, AncestorID, NodeName
1, 4, London
2, 3, Munich
3, 5, Germany
4, 5, UK
5, , Europe
];
Resultado:
NodeID | AncestorID | NodeName | AncestorName | DepthDiff |
---|---|---|---|---|
1 | 1 | London | London | 0 |
1 | 4 | London | UK | 1 |
1 | 5 | London | Europe | 2 |
2 | 2 | Munich | Munich | 0 |
2 | 3 | Munich | Germany | 1 |
2 | 5 | Munich | Europe | 2 |
3 | 3 | Germany | Germany | 0 |
3 | 5 | Germany | Europe | 1 |
4 | 4 | UK | UK | 0 |
4 | 5 | UK | Europe | 1 |
5 | 5 | Europe | Europe | 0 |