Агрегатная функция

Тип функции в управлении базами данных

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

(Рисунок 1) Диаграмма взаимосвязей сущностей, представляющая агрегацию.

К общим агрегатным функциям относятся:

Другие включают в себя:

  • Nanmean (среднее значение, игнорирующее значения NaN, также известное как «nil» или «null»)
  • Stddev

Формально агрегатная функция принимает в качестве входных данных набор , мультимножество (мешок) или список из некоторого входного домена I и выводит элемент выходного домена O . [1] Входные и выходные домены могут быть одинаковыми, например, для SUM, или могут быть разными, например, для COUNT.

Агрегатные функции широко используются во многих языках программирования , в электронных таблицах и в реляционной алгебре .

Функция listagg, определенная в стандарте SQL:2016 [2], объединяет данные из нескольких строк в одну объединенную строку.

На диаграмме отношений сущностей агрегация представлена, как показано на рисунке 1, с прямоугольником вокруг отношения и его сущностей, что указывает на то, что оно рассматривается как агрегированная сущность. [3]

Разложимые агрегатные функции

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

Некоторые агрегатные функции можно вычислить, вычислив агрегат для подмножеств, а затем агрегировав эти агрегаты; примеры включают COUNT, MAX, MIN, и SUM. В других случаях агрегат можно вычислить, вычислив вспомогательные числа для подмножеств, агрегировав эти вспомогательные числа и, наконец, вычислив общее число в конце; примеры включают AVERAGE(отслеживание суммы и количества, деление в конце) и RANGE(отслеживание максимума и минимума, вычитание в конце). В других случаях агрегат невозможно вычислить без анализа всего набора сразу, хотя в некоторых случаях приближения могут быть распределены; примеры включают DISTINCT COUNT( задача Count-distinct ), MEDIAN, и MODE.

Такие функции называются разложимыми функциями агрегации [4] или разложимыми агрегатными функциями . Простейшие из них можно назвать саморазложимыми функциями агрегации , которые определяются как функции f , такие, что существует оператор слияния ⁠ ⁠ {\displaystyle \алмаз} такой, что

ф ( Х И ) = ф ( Х ) ф ( И ) {\displaystyle f(X\uplus Y)=f(X)\diamond f(Y)}

где ⁠ ⁠ {\displaystyle \uplus} — объединение мультимножеств (см. гомоморфизм моноидов ).

Например, SUM:

СУММА ( х ) = х {\displaystyle \operatorname {СУММА} ({x})=x} , для синглтона;
СУММА ( Х И ) = СУММА ( Х ) + СУММА ( И ) {\displaystyle \operatorname {СУММА} (X\uplus Y)=\operatorname {СУММА} (X)+\operatorname {СУММА} (Y)} , что означает, что слияние ⁠ ⁠ {\displaystyle \алмаз} — это просто сложение.

COUNT:

СЧИТАТЬ ( х ) = 1 {\displaystyle \operatorname {COUNT} ({x})=1} ,
СЧИТАТЬ ( Х И ) = СЧИТАТЬ ( Х ) + СЧИТАТЬ ( И ) {\displaystyle \operatorname {COUNT} (X\uplus Y)=\operatorname {COUNT} (X)+\operatorname {COUNT} (Y)} .

MAX:

МАКС ( х ) = х {\displaystyle \operatorname {МАКС} ({x})=x} ,
МАКС ( Х И ) = макс ( МАКС ( Х ) , МАКС ( И ) ) {\displaystyle \operatorname {МАКС} (X\uplus Y)=\max {\bigl (}\operatorname {МАКС} (X),\operatorname {МАКС} (Y){\bigr )}} .

MIN:

МИН ( х ) = х {\textstyle \operatorname {MIN} ({x})=x} , [2]
МИН ( Х И ) = мин ( МИН ( Х ) , МИН ( И ) ) {\displaystyle \operatorname {MIN} (X\uplus Y)=\min {\bigl (}\operatorname {MIN} (X),\operatorname {MIN} (Y){\bigr)}} .

Обратите внимание, что саморазлагаемые функции агрегации можно объединять (формально, беря произведение), применяя их по отдельности, так что, например, можно вычислить SUMи COUNTодновременно, отслеживая два числа.

В более общем смысле можно определить разложимую функцию агрегации f как такую, которая может быть выражена как композиция конечной функции g и саморазложимой функции агрегации h , . Например, = / и = − . ф = г час , ф ( Х ) = г ( час ( Х ) ) {\displaystyle f=g\circ h,f(X)=g(h(X))} AVERAGESUMCOUNTRANGEMAXMIN

В фреймворке MapReduce эти шаги известны как InitialReduce (значение для индивидуального набора записей/одиночек), Combine (бинарное слияние двух агрегаций) и FinalReduce (конечная функция для вспомогательных значений) [5] , а перемещение разложимой агрегации перед фазой Shuffle известно как шаг InitialReduce [6].

Разложимые функции агрегации важны в онлайн-аналитической обработке (OLAP), поскольку они позволяют вычислять запросы агрегации на основе предварительно вычисленных результатов в кубе OLAP , а не на основе базовых данных. [7] Например, легко поддерживать COUNT, MAX, MIN, и SUMв OLAP, поскольку их можно вычислить для каждой ячейки куба OLAP, а затем суммировать («свернуть»), но трудно поддерживать MEDIAN, поскольку его необходимо вычислять для каждого представления отдельно.

Другие разложимые агрегатные функции

Для того чтобы вычислить среднее значение и стандартное отклонение по совокупным данным, необходимо иметь в наличии для каждой группы: сумму значений (Σx i = SUM(x)), количество значений (N=COUNT(x)) и сумму квадратов значений (Σx i 2 =SUM(x 2 )) каждой группы. [8]

AVG : или , только если COUNT(X)=COUNT(Y) : Сумма квадратов значений важна для вычисления стандартного отклонения групп : Для конечной совокупности с равными вероятностями во всех точках имеем [9] [ циклическая ссылка ] СРЕДНИЙ ( Х И ) = ( СРЕДНИЙ ( Х ) СЧИТАТЬ ( Х ) + СРЕДНИЙ ( И ) СЧИТАТЬ ( И ) ) / ( СЧИТАТЬ ( Х ) + СЧИТАТЬ ( И ) ) {\displaystyle \operatorname {AVG} (X\uplus Y)={\bigl (}\operatorname {AVG} (X)*\operatorname {COUNT} (X)+\operatorname {AVG} (Y)*\operatorname {COUNT} (Y){\bigr )}/{\bigl (}\operatorname {COUNT} (X)+\operatorname {COUNT} (Y){\bigr )}}
СРЕДНИЙ ( Х И ) = ( СУММА ( Х ) + СУММА ( И ) ) / ( СЧИТАТЬ ( Х ) + СЧИТАТЬ ( И ) ) {\displaystyle \operatorname {СРЕДНЕЕ} (X\uplus Y)={\bigl (}\operatorname {СУММА} (X)+\operatorname {СУММА} (Y){\bigr )}/{\bigl (}\operatorname {СЧЕТ} (X)+\operatorname {СЧЕТ} (Y){\bigr )}}
СРЕДНИЙ ( Х И ) = ( СРЕДНИЙ ( Х ) + СРЕДНИЙ ( И ) ) / 2 {\displaystyle \operatorname {AVG} (X\uplus Y)={\bigl (}\operatorname {AVG} (X)+\operatorname {AVG} (Y){\bigr )}/2}
SUM(x2)
СУММА ( Х 2 И 2 ) = СУММА ( Х 2 ) + СУММА ( И 2 ) {\displaystyle \operatorname {СУММА} (X^{2}\uplus Y^{2})=\operatorname {СУММА} (X^{2})+\operatorname {СУММА} (Y^{2})}
STDDEV
СТДДЕВ ( Х ) = с ( х ) = 1 Н я = 1 Н ( х я х ¯ ) 2 = 1 Н ( я = 1 Н х я 2 ) ( х ¯ ) 2 = СУММА ( х 2 ) / СЧИТАТЬ ( х ) СРЕДНИЙ ( х ) 2 {\displaystyle \operatorname {STDDEV} (X)=s(x)={\sqrt {{\frac {1}{N}}\sum _{i=1}^{N}(x_{i}-{\overline {x}})^{2}}}={\sqrt {{\frac {1}{N}}\left(\sum _{i=1}^{N}x_{i}^{2}\right)-({\overline {x}})^{2}}}={\sqrt {\operatorname {SUM} (x^{2})/\operatorname {COUNT} (x)-\operatorname {AVG} (x)^{2}}}}

Это означает, что стандартное отклонение равно квадратному корню из разницы между средним значением квадратов значений и квадратом среднего значения. STDDEV ( X Y ) = SUM ( X 2 Y 2 ) / COUNT ( X Y ) AVG ( X Y ) 2 {\displaystyle \operatorname {STDDEV} (X\uplus Y)={\sqrt {\operatorname {SUM} (X^{2}\uplus Y^{2})/\operatorname {COUNT} (X\uplus Y)-\operatorname {AVG} (X\uplus Y)^{2}}}} STDDEV ( X Y ) = ( SUM ( X 2 ) + SUM ( Y 2 ) ) / ( COUNT ( X ) + COUNT ( Y ) ) ( ( SUM ( X ) + SUM ( Y ) ) / ( COUNT ( X ) + COUNT ( Y ) ) ) 2 {\displaystyle \operatorname {STDDEV} (X\uplus Y)={\sqrt {{\bigl (}\operatorname {SUM} (X^{2})+\operatorname {SUM} (Y^{2}){\bigr )}/{\bigl (}\operatorname {COUNT} (X)+\operatorname {COUNT} (Y){\bigr )}-{\bigl (}(\operatorname {SUM} (X)+\operatorname {SUM} (Y))/(\operatorname {COUNT} (X)+\operatorname {COUNT} (Y)){\bigr )}^{2}}}}

Смотрите также

Ссылки

  1. ^ Иисус, Бакеро и Алмейда, 2011, 2 Определение проблемы, стр. 3.
  2. ^ ab Winand, Markus (2017-05-15). "Big News in Databases: New SQL Standard, Cloud Wars, and ACIDRain (Spring 2017)". DZone. Архивировано из оригинала 2017-05-27 . Получено 2017-06-10 . В декабре 2016 года ISO выпустила новую версию стандарта SQL. Она вводит новые функции, такие как сопоставление шаблонов строк, listagg, форматирование даты и времени и поддержка JSON.
  3. ^ Elmasri, Ramez (2016). Основы систем баз данных. Sham Navathe (Седьмое изд.). Hoboken, NJ. стр. 133. ISBN 978-0-13-397077-7. OCLC  913842106.{{cite book}}: CS1 maint: location missing publisher (link)
  4. ^ Иисус, Бакеро и Алмейда 2011, 2.1 Разложимые функции, стр. 3–4.
  5. ^ Ю, Гунда и Айсард 2009, 2. Распределенная агрегация, стр. 2–4.
  6. ^ Ю, Гунда и Айсард 2009, 2. Распределенная агрегация, с. 1.
  7. ^ Чжан 2017, стр. 1.
  8. ^ Инж. Оскар Бонилья, MBA
  9. ^ Стандартное отклонение#Идентичности и математические свойства

Литература

  • Грабиш, Мишель; Маришаль, Жан-Люк; Месиар, Радко; Пап, Эндре (2009). Функции агрегации . Энциклопедия математики и ее приложений. Том 127. Кембридж: Cambridge University Press . ISBN 978-0-521-51926-7. Збл  1196.00002.
  • Агрегатные функции Oracle: примеры MAX, MIN, COUNT, SUM, AVG
  • Ю, Юань; Гунда, Прадип Кумар; Айсард, Майкл (2009). Распределенная агрегация для параллельных вычислений данных: интерфейсы и реализации. ACM SIGOPS 22-й симпозиум по принципам операционных систем. ACM . С. 247–260. doi :10.1145/1629575.1629600.
  • Господи, Пауло; Бакеро, Карлос; Алмейда, Пауло Сержиу (2011). «Обзор алгоритмов агрегирования распределенных данных». arXiv : 1110.0725 [cs.DC].
  • Чжан, Чао (2017). Симметричная и асимметричная агрегатная функция в массивно-параллельных вычислениях (технический отчет).
  • Агрегатные функции (Transact-SQL)
Retrieved from "https://en.wikipedia.org/w/index.php?title=Aggregate_function&oldid=1194143001#Decomposable_aggregate_functions"