Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОТВЕТЫ_ФИН.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
338.29 Кб
Скачать

6. Інтеграція інформаційних ресурсів

Типичным подходом к интеграции информации в масштабах предприятия является построение хранилищ (DataWarehouse) витрин (data mart) данных на основе извлечения операционных данных, их трансформации к единой схеме и загрузки данных в хранилище (процедура ETL - extraction, transfotamation, loading). Этот подход пригоден для использования на предприятии с несколькими десятками операционных баз данных, находящихся под единым контролем. В Internet парадигма ETL не приемлема. Теперь требуется производить интеграцию информации между несколькими предприятиями. Как правило, организации не позволят в массовом порядке извлекать данные из своих операционных баз данных, к ним можно будет адресовать лишь одиночные запросы.

В результате потребуется интеграция, возможно, миллионов информационных источников "на лету". В связи с этим существует множество нерешенных проблем: семантическая неоднородность; неполнота и неточность данных; ограниченность доступа к конфиденциальным данным и т.д.

Исторически хранилища данных предназначались, прежде всего, для поддержки приложений оперативной аналитической обработки данных (OLAP). Для этих приложений исключительно важна "качественность" данных, которая и поддерживается процедурой OLAP. Так что, наряду с потребностью в решении технических проблем интеграции данных "на лету", нужно понять, в какой мере и каким образом этот подход может заменить традиционные хранилища данных.

7. Аналітичні функції. Призначення. Синтаксис

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

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

Впервые появились в версии СУБД Oracle 8.1.6 (26 штук) и получили дальнейшее развитие в версии 9. Созданы совместными усилиями фирм IBM, Oracle и Compaq путем разработки улучшений некоторых конструкций, имеющихся в стандарте SQL:1999.

Техническая цель введения аналитических функций - дать лаконичную формулировку и увеличить скорость выполнения "аналитических запросов" к БД. Пользование аналитическими функциями может дать следующие выгоды перед обычными операторами:

 Лаконичную и простую формулировку. Многие аналитические запросы к БД традиционными средствами сложно формулируются, а потому с трудом осмысливаются и плохо отлаживаются.

 Снижение нагрузки на сеть. То, что раньше могло формулироваться только серией запросов, сворачивается в один запрос. По сети только отправляется запрос и получается окончательный результат.

 Перенос вычислений на сервер. С использованием аналитических функций нет нужды организовывать расчеты на клиенте; они полностью проводятся на сервер, ресурсы которого могут быть более подходящими для быстрой обработки больших объемов данных.

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

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

Все функции имеют следующий синтаксис

ИМЯ_ФУНКЦИИ(<аргумент>,< аргумент >, . . . )

OVER (<конструкция_фрагментации> <конструкция_упорядочения> <конструкция_окна>)

Аналитические функции условно разбиваются на четыре основных класса в зависимости от возможностей.

  • функции ранжирования, позволяющие строить запросы типа "первых N".

  • оконные функции, позволяющие вычислять разнообразные агрегаты (групповые операции).

  • итоговые функции. Они очень похожи на оконные, но итоговые функции работают со всеми строками секции или группы. Ключевое отличие итоговой функции от оконной — отсутствие конструкции ORDER BY в операторе OVER. При отсутствии конструкции ORDER BY функция применяется к каждой строке группы. При наличии конструкции ORDER BY функция применяется к окну.

  • статистические функции, такие как VAR_POP, VAR_SAMP, STDEVJPOP, набор функций линейной регрессии и т.п. Эти функции позволяют вычислять значения статистических показателей для любой неупорядоченной секции.

Конструкция секционирования

Конструкция PARTITION BY логически разбивает результирующее множество на группы по критериям, задаваемым выражениями секционирования. Аналитические функции применяются к каждой группе независимо, — для каждой новой группы они сбрасываются. Если не указать конструкцию секционирования, все результирующее множество считается одной группой. Каждая аналитическая функция в запросе может иметь уникальную конструкцию секционирования. Синтаксис конструкции секционирования аналогичен синтаксису конструкции GROUP BY в обычных SQL-запросах: PARTITION BY выражение [, выражение] [, выражение]

Конструкция упорядочения

Конструкция ORDER BY задает критерий сортировки данных в каждой группе (в каждой секции). Это существенно влияет на результат выполнения любой аналитической функции: при наличии (или отсутствии) конструкции ORDER BY аналитические функции вычисляются по-другому. В отсутствие конструкции ORDER BY среднее значение вычисляется по всей группе, и одно и то же значение выдается для каждой строки (функция используется как итоговая). Когда функция используется с конструкцией ORDER BY, то она применяется по текущей и всем предыдущим строкам (функция используется как оконная).

Конструкция ORDER BY в аналитических функциях имеет следующий синтаксис:

ORDER BY выражение [ASC | DESC] [NULLS FIRST | NULLS LAST]

Необходимо учитывать, что строки будут упорядочены только в пределах секций (групп). Конструкция окна

Синтаксис

{ROWS | RANGE} {{UNBOUNDED | выражение} PRECEDING | CURRENT ROW }

{ROWS | RANGE}

BETWEEN

{{UNBOUNDED PRECEDING | CURRENT ROW |

{UNBOUNDED | выражение 1}{PRECEDING | FOLLOWING}}

AND

{{UNBOUNDED FOLLOWING | CURRENT ROW |

{UNBOUNDED | выражение 2}{PRECEDING | FOLLOWING}}

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

Например, конструкция диапазона RANGE UNBOUNDED PRECEDING означает: "применять аналитическую функцию к каждой строке данной группы, с первой по текущую". Стандартным является жестко привязанное окно, начинающееся с первой строки группы и продолжающееся до текущей. Очень важно: для использования окон необходимо задавать конструкцию ORDER BY.

Фразы PRECEDING и FOLLOWING задают верхнюю и нижнюю границы агрегирования (то есть интервал строк, "окно" для агрегирования).

Можно создавать окна по двум критериям:

по диапазону (RANGE) значений данных

по смещению (ROWS) относительно текущей строки.

Окна диапазона

Окна диапазона объединяют строки в соответствии с заданным порядком. Если в запросе сказано, например, "range 5 preceding", то будет сгенерировано перемещающееся окно, включающее предыдущие строки группы, отстоящие от текущей строки не более чем на 5 значений. Применять конструкцию RANGE с другими типами данных нельзя.

Окна строк

Окна срок задаются в физических единицах, строках. Окно заданное конструкцией count (*) over (order by x ROWS 5 preceding) будет включать до 6 строк: текущую и пять предыдущих (порядок определяется конструкцией ORDER BY). Для окон по строкам нет ограничений, присущих окнам по диапазону; данные могут быть любого типа и упорядочивать можно по любому количеству столбцов.

Применять аналитические функции в запросах можно только в предложениях SELECT, включающих фразы ORDER BY, поскольку эти функции оперируют с множеством результатов, полученным после соединений (joins) и выполнения фраз WHERE, GROUP BY и HAVING.

Нельзя использовать одну аналитическую функцию над другой. Это ограничение можно обойти с помощью нескольких вложенных SELECT.