Справочник по агрегатным функциям

Все стандартные агрегатные функции и доступные модификаторы перечислены на этой странице.

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

Функции агрегации

Массив

Создает массив определенных значений для элемента и/или его подэлементов.

Принимает модификаторы: #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