- Общие положения
- Общая информация
- Цели введения аналитических функций в Oracle
- Классификация видов аналитических функций в Oracle
- Основные технические особенности
- Место указания аналитических функций в SQL-предложении
- Сравнение с обычными функциями агрегирования
- Особенности обработки
- Разбиение данных на группы для вычислений
- Упорядочение в границах отдельной группы
- Выполнение вычислений для строк в группе по плавающему окну (интервалу)
- Формирование интервалов агрегирования "по строкам" и "по значениям"
- Функции FIRST_VALUE и LAST_VALUE для интервалов агрегирования
- Интервалы времени
- Виды аналических функций
- Функции ранжирования
- Функции подсчета долей
- Некоторые жизненные примеры аналитических запросов
- Для типов сегментов, более других расходующих дисковое пространство, выдать главных пользователей, ответственных за такой расход
- Выдать список периодов наиболее активного переключения журнальных файлов БД
Общие положения
Общая информация
В версии СУБД Oracle 8.1.6 появился новый класс из 26 функций, названных аналитическими, и получившим дальнейшее развитие в версии 9. Их описания были созданы совместными усилиями фирм IBM, Informix, Oracle и Compaq путем разработки так называемых "улучшений" некоторых конструкций, имеющихся в стандарте SQL1999.
В отличие от обычных скалярных функций аналитические функции берут аргументом SQL-таблицу, представляющую логический промежуточный результат обработки SQL-оператора, где использовано обращение к такой функции, и возвращают в качестве своего результата обычно тоже SQL-таблицу.
Цели введения аналитических функций в Oracle
Техническая цель введения аналитических функций - дать лаконичную формулировку и увеличить скорость выполнения "аналитических запросов" к БД, то есть запросов, имеющих смыслом выявление внутренних соотношений и зависимостей в данных. Более точно, пользование аналитическими функциями может дать следующие выгоды перед обычными SQL-операторами:
- Лаконичную и простую формулировку. Многие аналитические запросы к БД традиционными средствами сложно формулируются, а потому с трудом осмысливаются и плохо отлаживаются.
- Снижение нагрузки на сеть. То, что раньше могло формулироваться только серией запросов, сворачивается в один запрос. По сети только отправляется запрос и получается окончательный результат.
- Перенос вычислений на сервер. С использованием аналитических функций нет нужды организовывать расчеты на клиенте; они полностью проводятся на сервере, ресурсы которого могут быть более подходящи для быстрой обработки больших объемов данных.
- Лучшую эффективность обработки запросов. Аналитические функции имеют алгоритмы вычисления, неразрывно связанные со специальными планами обработки запросов, оптимизированными для большей скорости получения результата.
Стратегическая цель введения в Oracle аналитических функций - дать базовое средство для построения ИС типа "складов данных" (data warehouse, DW), ИС "аналитического характера" (business intelligence systems, BI) или OLAP-систем. По представлениям разработчиков, набор таких базовых средств помимо аналитических функций формируют еще и прочие средства Oracle, такие как
- конструкции ROLLUP, CUBE и связанные с ними в предложениях с GROUP BY
- материализованные выводимые таблицы (materialized views)
Классификация видов аналитических функций в Oracle
Согласно классификации из документации по Oracle, аналитические функции могут быть следующих видов:
(a) функции ранжирования
(b) статистические функции для плавающего интервала
(c) функции подсчета долей
(d) статистические функции LAG/LEAD с запаздывающим/опережающим аргументом
(e) статистические функции (линейная регрессия и т. д.)
Ссылки по теме