Аналитични функции в Oracle

Съдържание

Общи разпоредби

Главна информация

Във версия 8.1.6 на СУБД Oracle се появи нов клас от 26 функции, наречен аналитичен, който беше доразвит във версия 9. Техните описания бяха създадени съвместно от IBM, Informix, Oracle и Compaq чрез разработване на т.нар. "подобрения" на някои от структурите, налични в стандарта SQL1999.

За разлика от обикновените скаларни функции, аналитичните функции приемат като аргумент SQL таблица, представляваща логическия междинен резултат от обработката на SQL израз, където е използвано извикване на такава функция, и обикновено връщат SQL таблица като техен резултат.

Цели на въвеждането на аналитични функции в Oracle

Техническата цел на въвеждането на аналитични функции е да се осигури кратка формулировка и да се увеличи скоростта на изпълнение на „аналитични заявки“ към базата данни, тоест заявки, които имат смисъл да идентифицират вътрешните взаимоотношения и зависимости в данните. По-конкретно, използването на аналитични функции може да осигури следните предимства пред обикновените SQL изрази:

  • Кратка и проста формулировка. Много аналитични заявки към базата данни са трудни за формулиране с традиционни средства и поради това са трудни за разбиране и лошо отстранени грешки.
  • Намалено натоварване на мрежата. Това, което по-рано може да бъде формулирано само от поредица от заявки, се свива в една заявка. Заявка се изпраща само по мрежата и се получава крайният резултат.
  • Прехвърляне на изчисления на сървъра. С използването на аналитични функции няма нужда да се организират изчисления на клиента; те са изцяло хоствани на сървър, чиито ресурси може да са по-подходящи за бърза обработка на големи количества данни.
  • По-добра ефективност на обработката на заявките. Аналитичните функции имат изчислителни алгоритми, неразривно свързани със специални планове за обработка на заявки, оптимизирани за по-бързи резултати.

Стратегическата цел на въвеждането на аналитични функции в Oracle е да предостави основен инструмент за изграждане на ИС като хранилище за данни (DW), ИС от аналитичен характер (системи за бизнес разузнаване, BI) или системи OLAP. Според разработчиците набор от такива основни инструменти, освен аналитични функции, се формира и от други инструменти на Oracle, като напр.

  • ROLLUP, CUBE и свързани конструкции в клаузи GROUP BY
  • материализирани възгледи

Класификация на типовете аналитични функции в Oracle

Според класификацията от документацията на Oracle, аналитичните функции могат да бъдат от следните типове:

а) функции за класиране
б)
статистически функции за плаващ интервал
(° С)
функции за броене на фракции
(д) Статистически функции на LAG/LEAD със изоставащ/водещ аргумент
(д) статистически функции (линейна регресия и др.)

Основни технически характеристики

Къде да посочите аналитични функции в SQL израз

Аналитичните функции вземат като аргумент колона от междинния резултат на SQL израз и връщат същата колона. Следователно мястото на тяхното използване в оператора SQL може да бъде само клаузите ORDER BY и SELECT, които извършват окончателната обработка на логическия междинен резултат.

Сравнение с редовни функции за агрегиране

Много аналитични функции действат като обичайните скаларни агрегиращи функции SUM, MAX и т.н., когато се прилагат към групи редове, образувани с GROUP BY. Редовните функции за агрегиране обаче намаляват детайлността, докато аналитичните не. Илюстративен сравнителен пример:

ИЗБЕРИ deptno, работа, СУМА (сал) sum_sal
ОТ изп
GROUP BY deptno, работа;

ИЗБЕРИ емайл, дептно, работа,
SUM (sal) НАД (ДЯЛ ПО deptno, работа) sum_sal
ОТ emp;