Hierarchy

Префикс hierarchy используется для преобразования иерархической таблицы в полезную таблицу модели данных Qlik Sense. Его можно поставить перед оператором LOAD или SELECT. Он будет использовать результат оператора загрузки в качестве ввода для преобразования таблицы.

Префикс создает таблицу развернутых узлов, которая, как правило, включает то же количество записей, что и входная таблица, но при этом каждый уровень иерархии сохраняется в отдельном поле. В иерархической структуре можно использовать поле пути.

Syntax:  

Hierarchy (NodeID, ParentID, NodeName, [ParentName], [PathSource], [PathName], [PathDelimiter], [Depth])(loadstatement | selectstatement) 

 

В качестве входной таблицы должна использоваться таблица со смежными узлами. Таблицы со смежными узлами — таблицы, где каждая запись соответствует узлу и имеет поле, содержащее ссылку на родительский узел. В таких таблицах узел хранится в одной записи, но может иметь любое число дочерних узлов. В таблице могут содержаться дополнительные поля, описывающие атрибуты для узлов.

Префикс создает таблицу развернутых узлов, которая, как правило, включает то же количество записей, что и входная таблица, но при этом каждый уровень иерархии сохраняется в отдельном поле. В иерархической структуре можно использовать поле пути.

Обычно входная таблица имеет точно одну запись на узел, и в таком случае выходная таблица будет содержать такое же число записей. Однако иногда существуют узлы с несколькими родительским узлами, то есть один узел представлен несколькими записями во входной таблице. В таком случае в выходной таблице может содержаться больше записей, чем во входной.

Все узлы с родительским идентификатором, не найденные в столбце идентификаторов узлов (включая узлы с отсутствующими родительскими идентификаторами), будут расцениваться как корневые. К тому же загружаться будут только узлы с соединением с корневым узлом, прямым или косвенным, что тем самым позволит избежать циклических ссылок.

Можно создать дополнительные поля, содержащие имя родительского узла, путь узла и глубину узла.

Arguments:  

Аргумент Описание
NodeID Имя поля, содержащего идентификатор узла. Это поле должно существовать во входной таблице.
ParentID Имя поля, содержащего идентификатор родительского узла. Это поле должно существовать во входной таблице.
NodeName Имя поля, содержащего имя узла. Это поле должно существовать во входной таблице.
ParentName Строка, которая используется для наименования нового поля ParentName. При его отсутствии это поле не создается.
ParentSource Имя поля, которое содержит имя узла, используемого для создания пути к узлу. Дополнительный параметр. Если не указано, используется NodeName.
PathName Строка, которая используется для наименования нового поля Path, содержащего путь от корневого каталога к узлу. Дополнительный параметр. При его отсутствии это поле не создается.
PathDelimiter Строка, которая используется в качестве разделителя в новом поле Path. Дополнительный параметр. При его отсутствии используется ‘/’.
Depth Строка, которая используется для наименования нового поля Depth, содержащего глубину узла в иерархии. Дополнительный параметр. При его отсутствии это поле не создается.

Example:  

Hierarchy(NodeID, ParentID, NodeName, ParentName, NodeName, PathName, '\', Depth) LOAD * inline [

NodeID, ParentID, NodeName

1, 4, London

2, 3, Munich

3, 5, Germany

4, 5, UK

5, , Europe

];

 

NodeID ParentID NodeName NodeName1 NodeName2 NodeName3 ParentName PathName Depth
1 4 London Europe UK London UK Europe\UK\London 3
2 3 Munich Europe Germany Munich Germany Europe\Germany\Munich 3
3 5 Germany Europe Germany - Europe Europe\Germany 2
4 5 UK Europe UK - Europe Europe\UK 2
5   Europe Europe - - - Europe 1