Общие сведения о функциях для иерархий типа «родители-потомки» в 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(EmployeeKey, ParentEmployeeKey)»
|
|||||||||||||||||||||||||||||||||||||||||
Возвращает количество уровней в заданном PATH(), с текущего уровня до самого верхнего уровня родительского элемента. В следующем примере столбец PathLength определен как «=PATHLENGTH([Path])». Он содержит все данные из примера Path(), позволяющие понять принцип работы этой функции.
|
|||||||||||||||||||||||||||||||||||||||||
Возвращает элемент в указанной позиции результирующей строки функции PATH(), считая слева направо. В следующем примере столбец PathItem — 4-й слева определен как «=PATHITEM([Path], 4)». Этот пример возвращает EmployeKey в четвертой слева позиции в строке пути с использованием того же образца данных из примера Path().
|
|||||||||||||||||||||||||||||||||||||||||
Возвращает элемент в позиции position в указанной позиции результирующей строки функции PATH(), считая в обратном направлении справа налево. В следующем примере столбец PathItemReverse — 3-й справа определен как «=PATHITEMREVERSE([Path], 3)». Этот пример возвращает EmployeKey в третьей справа позиции в строке пути с использованием того же образца данных из примера Path().
|
|||||||||||||||||||||||||||||||||||||||||
Возвращает значение TRUE, если указанный объект item существует в указанном объекте path. В следующем примере столбец PathContains — сотрудник 162 определяется как «=PATHCONTAINS([Path], "162")»; в этом примере возвращается TRUE, если заданный путь содержит идентификатор сотрудника 162. В этом примере используются результаты из приведенного выше примера Path().
|
Внимание! |
---|
В службах SQL Server 2012 Analysis Services подсистема аналитики в памяти xVelocity (VertiPaq) не поддерживает определение иерархий типа «родители-потомки». Однако язык DAX предоставляет набор функций, позволяющих просматривать иерархии типа «родители-потомки» и использовать эти иерархии в формулах. |