Все стандартные агрегатные функции и доступные модификаторы перечислены на этой странице.
Вызов агрегатной функции содержит выражение в фигурных скобках ("{}"), которое вычисляется для элемента и всех подэлементов (или, в некоторых случаях, для другого подмножества связанных элементов в структуре), а затем результирующий значения агрегируются в соответствии со значением агрегатной функции.
Функции агрегации
Массив
Создает массив определенных значений для элемента и/или его подэлементов.
Принимает модификаторы: #ancestors, #children, #leaves, #strict, #subtree, #fromLevel, #toLevel, #reverse, #distinct (не включает повторяющиеся значения), #flatten (если функция создает массив, включает внутренние значения , а не массив), #compact
Avg
Avg вычисляет среднее значение определенных значений для элемента и/или его подэлементов. Результат для avg обычно такой же, как и для sum/count. Он ничего не возвращает, если для {x} нет определенных значений.
Если определенная задача (или элемент другого типа) включена в поддерево несколько раз, среднее значение будет включать значение для этой задачи только один раз. Это поведение можно переопределить с помощью модификатора #all.
Принимает модификаторы: #all, #children, #leaves, #strict, #subtree, #preceding, #levels (вместе с #preceding), #baseLevel (вместе с #preceding).
COUNT
Count вычисляет количество определенных значений (или истинных значений, если указан модификатор #truthy) для элемента и/или его подэлементов.
РИСУНОК count.png
Если определенная проблема (или другой тип элемента) включена в поддерево несколько раз, она будет учитываться только один раз. Это поведение можно переопределить с помощью модификатора #all.
Принимает модификаторы: #all, #children, #leaves, #strict, #subtree, #truthy, #preceding, #levels (вместе с #preceding), #baseLevel (вместе с #preceding).
JQL
Возвращает true, если текущая строка является проблемой и соответствует этому JQL.
Это не агрегатная функция; это встроенный запрос. Мы включили ее сюда, потому что ее легко спутать с агрегатной функцией — обе используют фигурные скобки { }.
Дополнительные сведения см. в разделе Встроенные запросы.
JOIN
Join объединяет (объединяет) строки из элемента и его родителей (или других элементов, если используются модификаторы).
- По умолчанию он объединяет все значения родительской строки от корня до собственного значения.
- Если текущая строка имеет дочерние элементы и установлен модификатор #subtree, объединение добавляет значения для дочерних элементов, заключая их в символы (по умолчанию фигурные скобки).
- Символы переноса можно установить с помощью #beforeChildren и #afterChildren (см. пример для #subtree, чтобы увидеть, как это работает).
Принимает модификаторы: #ancestors, #subtree, #children, #leaves, #strict, #reverse, #separator, #beforeChildren, #afterChildren, #fromLevel, #toLevel, #distinct.
MAX
Max возвращает максимальное определенное значение для элемента и/или его подэлементов. Можно сравнивать числовые поля, дату, продолжительность и текстовые поля. Текстовые поля сравниваются лексикографически.
Если формула создает массив, она найдет максимальный элемент в этом массиве.
Принимает модификаторы: #children, #leaves, #strict, #subtree.
MEDIAN
Производит среднее значение. Работает так же, какPERCENTILE#0.5.
Неопределенные игнорируются. Нечисловые значения приводят к ошибке.
Принимает модификаторы: #ancestors, #children, #leaves, #strict, #subtree, #fromLevel, #toLevel
MIN
Min возвращает минимальное определенное значение для элемента и/или его подэлементов. Можно сравнивать числовые поля, дату, продолжительность и текстовые поля. Текстовые поля сравниваются лексикографически.
Если формула создает массив, она найдет минимальный элемент в этом массиве.
Принимает модификаторы: #children, #leaves, #strict, #subtree.
PARENT
Parent извлекает значение из родительской строки или строки-предка по указанному уровню.
Используя модификатор #level, вы можете указать, из какой строки извлекать значение:
- PARENT#level=-1{} извлекает значение из родительской строки (так же, как PARENT{})
- PARENT#level=-2{} извлекает значение из прародительской строки
- PARENT#level=1{} извлекает значение из корневой строки
Принимает модификатор: #level.
PERCENTILE
Вычисляет значение процентиля из определенных значений для элемента и/или его подэлементов. Иерархия значений игнорируется — все предметные значения обрабатываются одинаково.
Должен включать модификатор #p, за которым следует желаемый процентиль (p=0,95, p=95). p=1 интерпретируется как 1%.
Неопределенные игнорируются. Нечисловые значения приводят к ошибке.
Принимает модификаторы: #ancestors, #children, #leaves, #strict, #subtree, #fromLevel, #toLevel, #p (обязательно)
QUARTILE1
Работает так же, как PERCENTILE#0.25.
Неопределенные игнорируются. Нечисловые значения приводят к ошибке.
Принимает модификаторы: #ancestors, #children, #leaves, #strict, #subtree, #fromLevel, #toLevel
QUARTILE3
Работает так же, как ПРОЦЕНТИЛЬ#0,75.
Неопределенные игнорируются. Нечисловые значения приводят к ошибке.
Принимает модификаторы: #ancestors, #children, #leaves, #strict, #subtree, #fromLevel, #toLevel
SJQL
Возвращает true, если текущая строка соответствует этому S-JQL.
Это не агрегатная функция; это встроенный запрос. Мы включили ее сюда, потому что ее легко спутать с агрегатной функцией — обе используют фигурные скобки { }.
Дополнительные сведения см. в разделе Встроенные запросы.
SUM
Сумма вычисляет числовое значение для значений, рассчитанных для элемента и/или его подэлементов.
Другие варианты SUM допускают различные типы агрегирования:
- SUM{} (то же, что и SUM#subtree{}) объединяет значения всех потомков
- SUM#children{} объединяет значения только из непосредственных дочерних элементов
- SUM#leaves{} объединяет значения из листьев
- SUM#preceding{} объединяет значения из предыдущих строк.
- Если формула создает массив, вычисляет сумму элементов этого массива.
Обратите внимание, что если значение выражения при агрегировании не является числовым (и не может быть преобразовано в число), оно игнорируется.
Если определенная задача (или элемент другого типа) включена в поддерево несколько раз, сумма будет включать значение для этой задачи только один раз. Это поведение можно переопределить с помощью модификатора #all.
Принимает модификаторы: #all, #children, #leaves, #preceding, #strict, #subtree, #levels (вместе с #preceding), #baseLevel (вместе с #preceding).
VALUES
Создает массив всех различных значений для элемента и/или его подэлементов.
Если значение представляет собой массив, каждое значение в массиве рассматривается отдельно.
Принимает модификаторы: #ancestors, #children, #leaves, #strict, #subtree, #fromLevel, #toLevel
Модификаторы агрегации
#afterChildren
Определяет выходной разделитель между дочерними и родительскими строками. Этот модификатор имеет строковый параметр. Разделитель выхода по умолчанию:
"(" - для #beforeChildren
")" - для #afterChildren
ПРИМЕР
КОД
JOIN#subtree#beforeChildren="<{"#afterChildren="}>"{X}
Может использоваться с: присоединиться.
#all
Указывает агрегатной функции включить повторяющиеся элементы. По умолчанию функции, подсчитывающие значения, игнорируют повторяющиеся элементы.
ПРИМЕР
КОД
SUM#all{X}
COUNT#all{X}
Может использоваться с: sum, count, avg.
#ancestors
Обрабатывать только предков текущей строки. Это поведение по умолчанию для соединения.
Может использоваться с: массивом, соединением, медианой, процентилем, квартилем 1, квартилем 3, значениями.
#baseLevel
Может использоваться с SUM с модификатором #preceding, чтобы указать, на каком уровне накопление будет сброшено и начнется с нуля. Это позволяет накапливать независимые кумулятивные значения в разных поддеревьях.
- По умолчанию baseLevel равен 0, что означает, что накопление никогда не начнется заново и будет охватывать всю структуру.
- Если baseLevel не равен нулю, накопление будет перезапущено, как только оно достигнет строки на базовом уровне или выше в иерархии. Например, если у вас есть эпики на верхнем уровне, а истории под ними, SUM#preceding#baseLevel=1{story_points} будет накапливать очки истории в рамках каждого эпика независимо.
Может использоваться с: avg, count, sum (вместе с #preceding).
#beforeChildren
Смотрите #afterChildren.
#childrenLink to #children
Обрабатывать только прямые дочерние элементы текущей строки.
КОД
JOIN#children{X}
SUM#children{X}
Может использоваться с: array, sum, count, avg, join, min, max, median, percentile, quartile1, quartile3, values.
#compact
Игнорирует неопределенные значения при сборе массива.
Этот модификатор неявно включается путем применения модификатора #distinct к агрегатной функции соединения.
Может использоваться с: array.
#depth
То же, что модификатор #level.
#distinct
#distinctс ARRAY
Заставляет массив создавать только массив различных значений. Повторяющееся значение не будет добавлено более одного раза, если этот модификатор включен.
ПРИМЕР
КОД
ARRAY#distinct{X}
#distinctс JOIN
Заставляет объединение объединять только различные значения. Повторяющееся значение не будет добавлено более одного раза, если этот модификатор включен. При использовании с массивами удаляет неопределенные значения и выполняет одношаговое выравнивание.
Модификаторы #beforeChildren и #afterChildren не работают, когда эта опция включена.
ПРИМЕР
КОД
JOIN#distinct{X}
JOIN#subtree#distinct{X}
КОД
JOIN#distinct{array}
Может использоваться с: join.
#flatten
При сборе значений из подэлементов (или другого подмножества связанных элементов), если значение является массивом, включает все элементы, а не только массив.
Этот модификатор неявно включается путем применения модификатора #distinct к агрегатной функции соединения.
Может использоваться с:array.
#fromDepth
То же, что и #fromLevel.
#fromLevel
Указывает позицию первой строки, которую агрегатная функция должна принимать в качестве входных данных для последовательности.
Позиция определяется целочисленным параметром, обозначенным как n ниже:
- Положительные значения означают абсолютную глубину строки в структуре, т.е. n=1 означает корень.
- Отрицательные значения означают глубину относительно текущей строки, например. n=-1 — прямой родительский элемент текущего элемента.
- По умолчанию 1.
- Ноль означает «суперкорневую» строку, которая является вымышленным родителем всех верхних строк. Его можно использовать для получения значения другой агрегатной функции, примененной ко всей структуре. Например, JOIN#fromLevel=0{MIN{due_date}} предоставит последовательность самых ранних дат выполнения, начиная с самой ранней во всей структуре, затем самой ранней во всем корневом дереве, в котором находится этот элемент, и так далее.
Этот модификатор не работает ни с какими типами деревьев, кроме #ancestors.
ПРИМЕР
КОД
JOIN#fromLevel=-1{X}
JOIN#fromLevel=2 {X}
Может использоваться с: array, join, median, percentile, quartile1, quartile3, values.
#leaves
Обрабатывать только листья (элементы без дочерних элементов) в поддереве текущей строки.
ПРИМЕР
КОД
JOIN#leaves{X}
SUM#leaves{X}
Может использоваться с: array, sum, count, avg, join, min, max, median, percentile, quartile1, quartile3, values.
#level
При использовании с PARENT указывает позицию родителя, который имеет значение.
Позиция определяется целочисленным параметром, обозначенным как n ниже:
- Положительные значения означают абсолютную глубину строки в структуре: n=1 — корневой элемент, n=2 — элемент 2-го уровня и т. д.
- Отрицательные значения означают глубину относительно текущей строки: n=-1 — это прямой родитель текущего элемента.
- По умолчанию -1.
- Ноль означает «суперкорневую» строку, которая является вымышленным родителем всех верхних строк. Его можно использовать для получения значения другой агрегатной функции, примененной ко всей структуре. Например, PARENT#level=0{SUM{story_points}} означает общее количество очков истории для всей структуры (включая поддеревья для всех корней).
При использовании с SUM с модификатором #preceding указывает уровень, на котором значения должны быть агрегированы.
ПРИМЕР
КОД
PARENT#level=-1{X} // по умолчанию
PARENT#level=-2{X} // "прародитель"
PARENT#level=1 {X} // корневая строка
PARENT#level=2 {X}
Может использоваться с: parent, sum (вместе с #preceding), count (вместе с #preceding), avg (вместе с #preceding).
#levels
Может использоваться с SUM с модификатором #preceding, чтобы указать, на каких уровнях должно происходить начисление значений.
- Это может быть одно числовое значение, например: SUM#preceding#levels=1{story_points} будет накапливать Story Points сверху вниз на уровне 1.
- Это может быть список чисел, и в этом случае список должен быть заключен в кавычки: SUM#preceding#levels="2,4"{time_spent} будет накапливать время, потраченное на уровнях 2 и 4.
- По умолчанию учитываются все уровни.
Обратите внимание, что если вы используете модификатор #baseLevel, будут учитываться только значения на уровнях, которые глубже базового уровня.
Вы также можете использовать #level вместо #levels.
Может использоваться с: avg, count, sum (вместе с #preceding).
#preceding
Может использоваться с СУММОЙ для вычисления числового итога текущего элемента и всех элементов над ним в структуре.
Может комбинироваться со следующими модификаторами:
- #baseLevel - сумма перезапускается при достижении указанного уровня
- #levels - в сумму будут включены только указанные уровни
- #all - элементы, которые появляются более одного раза, будут учитываться несколько раз.
ПРИМЕР
КОД
SUM#preceding{X}
SUM#preceding#baseLevel=1{X}
SUM#preceding#levels="1,3"{X}
Может использоваться с: sum.
#reverse
Изменяет порядок обработки строк на обратный.
ПРИМЕР
КОД
JOIN#reverse{X}
Может использоваться с: array, join.
#separator
Определяет разделитель для соединения строк. Этот модификатор имеет строковый параметр. По умолчанию ",".
ПРИМЕР
КОД
JOIN#separator="->"{X}
Может использоваться с: join.
#strict
Не обрабатывать текущий элемент строки как часть агрегации.
Нельзя использовать вместе с #children, #ancestors или #leaves, так как они уже исключают текущую строку.
ПРИМЕР
КОД
JOIN#strict{X}
SUM#strict{X}
Может использоваться с: array, sum, count, avg, join, min, max, median, percentile, quartile1, quartile3, values.
#subtree
Обработать все поддерево текущей строки. Это поведение по умолчанию для sum, count, avg, min, max.
ПРИМЕР
КОД
JOIN#subtree{X}
Может использоваться с: array, sum, count, avg, join, min, max, median, percentile, quartile1, quartile3, values.
#toDepth
То же, что #toLevel.
#toLevel
Задает позицию последней строки, которую агрегатная функция должна принимать в качестве входных данных для последовательности.
Позиция определяется целочисленным параметром, обозначенным как n ниже:
- Положительные значения означают абсолютную глубину ряда в структуре, т.е. n=1 означает корень.
- Отрицательные значения означают глубину относительно текущей строки, например. n=-1 — прямой родительский элемент текущего элемента.
- 0 означает текущую строку.
- По умолчанию 0.
Этот модификатор не работает ни с какими типами деревьев, кроме #ancestors.
ПРИМЕР
КОД
JOIN#toLevel=-1{X}
JOIN#toLevel=2 {X}
Может использоваться с:array, join, median, percentile, quartile1, quartile3, значениями.
#truthy
Строка подсчитывается только в том случае, если подвыражение дает истинное значение.
ПРИМЕР
КОД
COUNT#truthy{X}
По материалам Atlassian JIRA Structure: Aggregate Function Reference