Аналитические функции в Oracle (Часть 1)

Источник: akarak

  • Общие положения
    • Общая информация
    • Цели введения аналитических функций в 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) статистические функции (линейная регрессия и т. д.)


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=23187