Общие сведения о функциях для иерархий типа «родители-потомки» в DAX

DAX предоставляет пять функций для управления данными, представленными в виде иерархии типа «родители-потомки» в моделях. Эти функции можно использовать для получения следующих данных: общее количество родительских элементов строки, количество уровней в иерархии до родительского элемента верхнего уровня, идентификатор родительского элемента, расположенного на n уровней выше текущей строки, идентификатор n-потомка, считая от верхнего уровня иерархии. Также с помощью этих функций можно определить, является ли определенный родительский элемент элементом иерархии текущей строки.

Функции иерархии типа «родители-потомки» в DAX

В следующей таблице содержатся иерархии типа «родители-потомки» для столбцов EmployeeKey и ParentEmployeeKey, используемые во всех примерах функций.

EmployeeKey

ParentEmployeeKey

112

14

112

3

14

11

3

13

3

162

3

117

162

221

162

81

162

В приведенной выше таблице видно, что у сотрудника 112 нет родительских элементов, руководителем сотрудника 14 выступает сотрудник 112 (ParentEmployeeKey), сотрудник 3 имеет в подчинении сотрудника 14, а также сотрудников 11, 13 и 162. Описанное выше позволяет определить следующее: у сотрудника 112 нет руководителя, стоящего на более высоком уровне иерархии, при этом он является руководителем для всех сотрудников, отображенных здесь. Также видно, что сотрудник 3 находится в подчинении у сотрудника 14, а сотрудники 11, 13 и 162 — в подчинении у сотрудника 3.

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

Функция

Описание / Пример

Функция PATH (DAX)

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

В следующем примере столбец «Путь» определяется как «=PATH(EmployeeKey, ParentEmployeeKey)»

EmployeeKey

ParentEmployeeKey

Путь

112

112

14

112

112|14

3

14

112|14|3

11

3

112|14|3|11

13

3

112|14|3|13

162

3

112|14|3|162

117

162

112|14|3|162|117

221

162

112|14|3|162|221

81

162

112|14|3|162|81

Функция PATHLENGTH (DAX)

Возвращает количество уровней в заданном PATH(), с текущего уровня до самого верхнего уровня родительского элемента.

В следующем примере столбец PathLength определен как «=PATHLENGTH([Path])». Он содержит все данные из примера Path(), позволяющие понять принцип работы этой функции.

EmployeeKey

ParentEmployeeKey

Путь

PathLength

112

112

1

14

112

112|14

2

3

14

112|14|3

3

11

3

112|14|3|11

4

13

3

112|14|3|13

4

162

3

112|14|3|162

4

117

162

112|14|3|162|117

5

221

162

112|14|3|162|221

5

81

162

112|14|3|162|81

5

Функция PATHITEM (DAX)

Возвращает элемент в указанной позиции результирующей строки функции PATH(), считая слева направо.

В следующем примере столбец PathItem — 4-й слева определен как «=PATHITEM([Path], 4)». Этот пример возвращает EmployeKey в четвертой слева позиции в строке пути с использованием того же образца данных из примера Path().

EmployeeKey

ParentEmployeeKey

Путь

Элемент PathItem — 4-й слева

112

112

14

112

112|14

3

14

112|14|3

11

3

112|14|3|11

11

13

3

112|14|3|13

13

162

3

112|14|3|162

162

117

162

112|14|3|162|117

162

221

162

112|14|3|162|221

162

81

162

112|14|3|162|81

162

Функция PATHITEMREVERSE (DAX)

Возвращает элемент в позиции position в указанной позиции результирующей строки функции PATH(), считая в обратном направлении справа налево.

В следующем примере столбец PathItemReverse — 3-й справа определен как «=PATHITEMREVERSE([Path], 3)». Этот пример возвращает EmployeKey в третьей справа позиции в строке пути с использованием того же образца данных из примера Path().

EmployeeKey

ParentEmployeeKey

Путь

PathItemReverse — 3-й справа

112

112

14

112

112|14

3

14

112|14|3

112

11

3

112|14|3|11

14

13

3

112|14|3|13

14

162

3

112|14|3|162

14

117

162

112|14|3|162|117

3

221

162

112|14|3|162|221

3

81

162

112|14|3|162|81

3

Функция PATHCONTAINS (DAX)

Возвращает значение TRUE, если указанный объект item существует в указанном объекте path.

В следующем примере столбец PathContains — сотрудник 162 определяется как «=PATHCONTAINS([Path], "162")»; в этом примере возвращается TRUE, если заданный путь содержит идентификатор сотрудника 162. В этом примере используются результаты из приведенного выше примера Path().

EmployeeKey

ParentEmployeeKey

Путь

PathContains — сотрудник 162

112

112

FALSE

14

112

112|14

FALSE

3

14

112|14|3

FALSE

11

3

112|14|3|11

FALSE

13

3

112|14|3|13

FALSE

162

3

112|14|3|162

TRUE

117

162

112|14|3|162|117

TRUE

Предупреждение

В службах SQL Server 2012 Analysis Services модуль аналитики в памяти xVelocity (VertiPaq) не поддерживает определение иерархий типа «родители-потомки». Однако язык DAX предоставляет набор функций, позволяющих просматривать иерархии типа «родители-потомки» и использовать эти иерархии в формулах.