Функции OVER
Функции OVER используются для определения способа среза данных, например относительно временных периодов.
Параметр | Описание |
---|---|
All | Использует все узлы из указанной по ссылке иерархии. Это может быть полезно при пересечении текущего узла двумя или несколькими иерархиями. Например, можно показать относительные объемы продаж по разным категориям продуктов за каждый месяц. Примеры пользовательских выражений: Sum([Sales]) / Sum([Sales]) OVER (Intersect(All([Axis.Color]), [Axis.X])) Sum([Sales]) / Sum([Sales]) OVER (All([Axis.X])) * 100 Примеры вычисляемых столбцов: Sum([Sales]) OVER All([Date]) Max([Sales]) OVER Intersect([Category], All([Date])) |
AllNext | Использует все узлы, включая текущий, до конца уровня. Пример пользовательского выражения: Sum([Sales]) OVER (AllNext([Axis.X])) Примеры вычисляемых столбцов: Sum([Sales]) OVER AllNext([Date]) Max([Sales]) OVER Intersect([Category], AllNext([Date])) |
AllPrevious | Использует все узлы, включая текущий, с начала уровня. Может использоваться для вычисления нарастающего итога. Примеры пользовательских выражений: Sum([Sales]) OVER (AllPrevious([Axis.X])) Sum([Sales]) OVER (Intersect(Parent([Axis.X]), AllPrevious([Axis.X]))) Примеры вычисляемых столбцов: Sum([Sales]) OVER AllPrevious([Date]) Max([Sales]) OVER Intersect([Category], AllPrevious([Date])) |
FirstNode | Выбирает первый узел на текущем уровне. Пример пользовательского выражения: Sum([Sales]) - Sum([Sales]) OVER (FirstNode([Axis.X])) Пример вычисляемого столбца: Sum([Sales]) - Sum([Sales]) OVER (FirstNode([Hierarchy.TimeHierarchy])) |
Intersect | Возвращает пересеченные строки из узлов различных иерархий. См. также AllPrevious и All. Пример пользовательского выражения: Intersect(Parent([Axis.X]), All([Axis.Color]), Parent([Axis.Rows]), ...) Пример вычисляемого столбца: Sum([Sales]) OVER Intersect([Category], AllPrevious([Date])) |
LastNode | Выбирает последний узел на текущем уровне. Пример пользовательского выражения: Sum([Sales]) - Sum([Sales]) OVER (LastNode([Axis.X])) Пример вычисляемого столбца: Sum([Sales]) - Sum([Sales]) OVER (LastNode([Hierarchy.TimeHierarchy])) |
LastPeriods | Включает текущий узел и n - 1 предыдущих узлов. Можно использовать для вычисления скользящих средних. Пример пользовательского выражения: Sum([Sales]) OVER (LastPeriods(3, [Axis.X]))/3 Пример вычисляемого столбца: Sum([Sales]) - Sum([Sales]) OVER (LastPeriods([Hierarchy.TimeHierarchy])) |
NavigatePeriod | Позволяет указать собственную навигацию по узлам. У этого метода четыре аргумента. Arg1 — иерархия, по которой выполняется навигация. Arg2 — строковое значение, указывающее уровень иерархии, до которого будет выполняться навигация. Arg3 — целое число, указывающее число шагов, на которое следует переместиться в сторону по иерархии на уровне, заданном аргументом Arg1. Arg4 — необязательный аргумент, определяющий нижний уровень иерархии, до которого может выполняться навигация. Этот аргумент можно опустить. Тогда выполняется переход на конечный уровень. Примеры пользовательских выражений: Sum([Sales]) OVER NavigatePeriod([Axis.X], "Year", -1) Sum([Value]) OVER NavigatePeriod([Axis.X], "Year", 0, 0) Sum([Sales]) OVER NavigatePeriod([Axis.X], 2, -1, 2) Пример вычисляемого столбца: Avg([Sales]) OVER (NavigatePeriod([Hierarchy.TimeHierarchy],0,-10)) - Avg([Sales])OVER (NavigatePeriod([Hierarchy.TimeHierarchy],0,10)) |
Next | Сравнивает текущий узел со следующим узлом на одном уровне иерархии. Если следующего узла нет (если текущий узел — последний на текущем уровне), то в итоговом подмножестве не будет ни одной строки. Примеры пользовательских выражений: Sum([Sales]) - Sum([Sales]) OVER (Next([Axis.X])) Count() OVER Next([Axis.X], 2) Пример вычисляемого столбца: Max([Sales]) OVER (Intersect([Category],Next([Year]))) |
NextPeriod | Использует следующий узел, имеющий следующее значение на одном уровне иерархии, в качестве текущего узла. Если следующего узла нет (если текущий узел — последний на текущем уровне), то в итоговом подмножестве не будет ни одной строки. Примеры пользовательских выражений: Sum([Sales]) OVER (NextPeriod([Axis.X])) Count() OVER NextPeriod([Axis.X], 2) Пример вычисляемого столбца: Max([Sales]) OVER (Intersect([Category],NextPeriod([Year]))) |
ParallelPeriod | Использует предыдущий параллельный узел с таким же значением на том же уровне, что и текущий узел. Например, это можно использовать для сравнения результатов по продажам за каждый месяц с соответствующими месяцами предшествующего года. Пример пользовательского выражения: Sum([Sales])-Sum([Sales]) OVER (ParallelPeriod([Axis.X])) Пример вычисляемого столбца: Sum([Sales])-Sum([Sales]) OVER (ParallelPeriod([Hierarchy.TimeHierarchy])) |
Parent | Использует дочернее подмножество текущего узла. Если у узла нет родителя, в качестве подмножества используются все строки. Примеры пользовательских выражений: Sum([Sales]) / Sum([Sales]) OVER (Parent([Axis.Color])) Sum([Sales]) / Sum([Sales]) OVER (Parent([Axis.X])) * 100 Avg([Sales]) OVER Parent([Axis.X]) Пример вычисляемого столбца: Sum([Sales]) OVER (Parent([Hierarchy.TimeHierarchy])) |
Previous | Использует предыдущий узел на том же уровне, на котором находится текущий узел, для сравнения результатов текущего узла с предыдущим. Если предыдущего узла нет (если текущий узел является первым на текущем уровне), то в итоговом подмножестве не будет ни одной строки. Примеры пользовательских выражений: Sum([Sales]) - Sum([Sales]) OVER (Previous([Axis.X])) Count() OVER Previous([Axis.X], 2) Пример вычисляемого столбца: Max([Sales]) OVER (Intersect([Category],Previous([Year]))) |
PreviousPeriod | Использует предыдущий узел, имеющий предыдущее значение, на одном уровне иерархии в качестве текущего узла. Если предыдущего узла нет (если текущий узел является первым на текущем уровне), то в итоговом подмножестве не будет ни одной строки. Примеры пользовательских выражений: Sum([Sales]) OVER (PreviousPeriod([Axis.X])) Count() OVER PreviousPeriod([Axis.X], 2) Пример вычисляемого столбца: Max([Sales]) OVER (Intersect([Category],PreviousPeriod([Year]))) |