HierarchyBelongsTo
Префикс используется для преобразования таблицы с родительско-дочерней иерархией в полезную таблицу модели данных QlikView. Его можно поставить перед оператором LOAD или SELECT. Он будет использовать результат оператора загрузки в качестве ввода для преобразования таблицы.
Префикс позволяет создавать таблицу, которая содержит все связи родительский-дочерний элемент иерархии. Родительские поля затем могут использоваться для выбора целых деревьев в иерархии. Выходная таблица, как правило, включает несколько записей на каждый узел.
Синтаксис:
HierarchyBelongsTo (NodeID, ParentID, NodeName, AncestorID, AncestorName, [DepthDiff])(loadstatement | selectstatement)
В качестве входной таблицы должна использоваться таблица со смежными узлами. Таблица со смежными узлами — таблица, где каждая запись соответствует узлу и имеет поле, содержащее ссылку на родительский узел. В таких таблицах узел хранится в одной записи, но может иметь любое число дочерних узлов. В таблице могут содержаться дополнительные поля, описывающие атрибуты для узлов.
Можно создать дополнительные поля, содержащие разницу глубины узлов.
Аргументы:
Аргумент | Описание |
---|---|
NodeID | Имя поля, содержащего идентификатор узла. Это поле должно существовать во входной таблице. |
ParentID | Имя поля, содержащего идентификатор родительского узла. Это поле должно существовать во входной таблице. |
NodeName | Имя поля, содержащего имя узла. Это поле должно существовать во входной таблице. |
AncestorID | Строка имени нового поля идентификатора родительского узла, которое содержит идентификатор родительского узла. |
AncestorName | Строка имени нового поля родительского узла, которое содержит имя родительского узла. |
DepthDiff | Строка имени нового поля DepthDiff, содержащего глубину узла в иерархии по отношению к родительскому узлу. Необязательный параметр. При его отсутствии это поле не создается. |
Пример:
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
];
Результат:
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 |