sonyps4.ru

Агрегирование и систематизация данных. Агрегирование данных

Что такое агрегации и какие их виды существуют? Какова их роль в анатомии человека, информационных технологиях и социологии? Полезны ли они или нет? Об этом мы и поговорим в рамках данной статьи.

Общая информация

Для начала давайте ознакомимся с тем, что же собой представляет термин «агрегации». Это слово используется для обозначения процесса объединения разных элементов в одну общую систему. Это настолько общее понятие, что оно может использоваться во всех сферах, где можно наблюдать подобное. Можно даже назвать агрегацией собрание пары людей, что занимают определённое пространство. В это верится с трудом, но если ознакомиться с трудами, скажем, Эрика Берна, это не покажется выдумкой автора. Более того, агрегации - это базовое понятие в целом ряде систем классификации человеческих сообществ, что используются в психологии и социологии. В качестве альтернативы часто используют ещё такое словосочетание, как «социальная группа», которое является несколько более узнаваемым. Но это относится только к социологии и психологии. В других дисциплинах и сферах использования часто применяются иные альтернативные названия.

Агрегация информации

В последнее время часто высказывается предположение о том, что за двадцать первый век человеком было сгенерировано больше информации, чем за всю его предыдущую историю. К примеру, в Harvard Business Review провели исследование, согласно которому даже за последние несколько лет было создано такое количество данных, что они превышают всё, ранее сформулированное и представленное к нашему сведению. При этом наметилась тенденция, когда очень большие массивы качественного и интересного контента создают не профессиональные авторы, а обычные люди с помощью социальных сетей и блогов. Но такая агрегация данных имеет и негативные последствия. В первую очередь необходимо упомянуть о проблеме информационной перегрузки. Так обозначается ситуация, когда человеком получается так много данных, что становится сложно их всех воспринимать. Есть определённые проблемы и с распределением свободного времени. Так, специалисты ранее упомянутой Harvard Business Review утверждают, что сейчас человек около 1/5 своего времени тратит на поиск в Сети, из которого почти половина идёт на то, что уже было просмотрено. Из этого можно сделать заключение, что у нас есть определённые проблемы в плане как получения новых данных, так и хранения уже имеющихся.

Социальный аспект поведения

Человеку чрезвычайно сложно жить без общества.

В той или иной мере с другими людьми контактировать приходится практически каждому. Этому способствует и агрегация интересов, и создание комфортной среды. Интересна в этом плане роль социальных сетей (особенно в плане получения информации). Так, компания ComScore провела исследование, в результате которого установила, что каждый десятый посетитель новостных сайтов перед тем как зайти на них, посетил "Фейсбук". Таким образом, можно уверенно говорить о том, что сайты подобного типа постепенно увеличивают свою роль в плане поиска и ознакомления с информацией. А сколько же данных передаётся между людьми во время простого общения? Увы, человеку это даже не по силам подсчитать. Но провести подобную агрегацию смог бы искусственный интеллект.

Зачем это необходимо?

В общем случае агрегации - это полезный инструментарий, который помогает ориентироваться во всё возрастающем потоке информации, которая обрушивается на человека. Почему агрегация приобретает популярность? Дело в том, что почти поголовно людям нравится читать не некую абстрактную информацию, а то, что им по вкусу. И желательно тратить при этом времени по минимуму. И здесь агрегации - это настоящее откровение и спасение. Ведь они позволяют экономить время, деньги, образуют единую точку входа, разбивают информацию на категории и архивируют, а также повышают релевантность результатов поиска. И это всё является важной составляющей глобальной сети, известной также как Интернет. Агрегации позволяют избегать работы на микроуровнях (исключение - анатомия человека) и работать уже с объединёнными группами объектов.

Как всё развивалось?

Своё начало агрегации данного типа берут, пожалуй, со времён закладок, которые появились в первых браузерах ещё в 1993 году, и поисковых систем, которые в первоначальном виде представляли собой каталоги заранее отобранных кем-то ссылок. Постепенно это всё развивалось.

И когда сформировалась идея Web 2.0 и генерации пользователем контента, то возникли сервисы На момент их организации они были флагманами подобного движения. Многие из решений, которые возникли в то время, работают и сейчас. Сейчас подобные сервисы предлагают свои услуги в ранжировании и подборе контента. Как правило, это относится к новостным агрегатам. Но подобные механизмы используют и многие иные сервисы, вроде досок картинок, и много других. Даже упомянутые ранее социальные сети, когда предлагают новых людей для знакомства, действуют подобным образом, подбирая по интересам. Закономерное продолжение в виде идеи Web 3.0 представляет собой персонализацию информации и разработку различных способов её доставки к конечному потребителю. И благодаря росту размера информационного потока нагрузка на пользователя будет расти, а вместе с этим и улучшится качество фильтрации контента.

Агрегация каналов

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

Агрегация в программировании

Второе название этого процесса в данном случае - делегирование. Используется оно в объектно-ориентированном программировании. Подразумевают под этим методику создания нового класса путём включения уже существующих. Агрегирование ещё также называют отношением принадлежности. Когда создан новый класс, вложенные объекты обычно объявляют закрытыми. И для программистов, которые работают с ними, они стают недоступными. С одной стороны, это неудобно. Но с другой - создатель класса может менять объекты, и при этом не будет нарушена работа уже существующего клиентского кода. К тому же это всё позволяет делать взаимодействие более динамичным и гибким в определённых границах.

Агрегация тромбоцитов

Но не едиными информационными потоками живёт это понятие. Существует ещё и агрегация тромбоцитов. Что это такое? Так называется процесс слипания (склеивания) тромбоцитов под влиянием специфических стимуляторов между собой. Это всё, что собой представляет агрегация тромбоцитов? Что это такое на микроуровне? Способствуют этому специальные индукторы: серотонин, адреналин, тромбоксан А2, АДФ, нестабильные простагландины и тромбоцитоактивирующий фактор. Когда же и как всё будет происходить, определяют гликопротеины мембран тромбоцитов IIb/IIIa, когда они взаимодействуют между собой вместе с фибриногеном. Может ли быть такое, что будет нарушена агрегация тромбоцитов? Что это такое в перспективе? В подобном случае у человека наблюдается кровоточивость. При более детальном обследовании ему ставят диагноз болезни, в основе которой лежит недостаточность (как правило, врождённая) гликопротеинов или фибриногена.

Агрегация клеток

Эта тема в биологии рассматривается немного отдельно от случая с тромбоцитами. Но в общем агрегация и здесь собой представляет слипание клеток. Подобное явление может наблюдаться только в многоклеточных образованиях. Сам данный процесс представляет собой «сортировку», во время которой однотипные слипаются, тогда как разнотипные остаются работать разобщенно. Агрегация клеток наблюдается и в искусственных, и в естественных условиях. То, с какой интенсивностью протекает данный процесс, зависит от ионного состава среды и температуры. Само это явление может быть и позитивным, и негативным. Хорошим примером второго случая является агрегация эритроцитов. Под этим понимают образование агломерации кровяных тел разной плотности и величины при нарушении микроциркуляции. А это уже вызывает негативные последствия. Самыми значимыми является ухудшение крови. Это можно наблюдать в тех случаях, когда человек заболевает малярией, пневмонией или же у него наблюдается шоковое состояние.

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

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

Применяемые агрегирующие функции записываются после ключевого слова SELECT . Также допускается использовать агрегирующие функции в составе выражений, включающих функции, арифметические и побитовые операции. В одном запросе может перечисляться несколько выражений с агрегирующими функциями. Не допускается в запросе одновременно с агрегирующими функциями запрашивать значения полей записей БД, либо использовать в аргументах неагрегирующих функций обращения к полям записей БД. Например, запрос вида SELECT SQRT(Area), SUM(Perimeter) FROM Здания не допускается, поскольку аргументом функции SQRT является название поля данных.

Общая запись агрегирующих функций:

<Функция> ([DISTINCT ] <выражение> )

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

Остальная часть запроса задается стандартным образом.

Перед аргументом функции (кроме функций MAX и MIN )может указываться ключевое слово DISTINCT . В этом случае итоговое значение вычисляется только для различающихся значений аргумента. При использовании ключевого слова DISTINCT в качестве аргумента агрегирующей функции нельзя использовать арифметические выражения, - только названия полей.

В языке SQL используются следующие агрегирующие функции:

SUM ([DISTINCT ] <выражение>)

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

AVG ([DISTINCT ] <выражение>)

Среднее значение для выражения. Выражение должно возвращать числовое значение.

COUNT ([DISTINCT ] <выражение> |*)

Подсчитывает число записей, в который выражение не имеет значение Null (поля имеют значение Null , когда никакое значение для них не задано). Выражение может возвращать произвольное значение.

При используемом формате функции COUNT (*) возвращает общее количество записей в БД слоя.

MAX (<выражение>)

Возвращает максимальное значение выражения для выборки.

MIN ( <выражение> )

Возвращает минимальное значение выражения из выборки.

Применение агрегирующих функций

Простой пример

SELECT SUM (Perimeter) FROM Здания

Выводит сумму периметров зданий.

Одновременное применение нескольких функций

SELECT AVG (Area), Count(*) FROM Здания

Выводит среднюю площадь здания и общее количество зданий.

Применение функций совместно с условиями отбора

SELECT SUM (Area) FROM Здания WHERE Улица="Нахимова"

Возвращает сумму площадей зданий расположенных на улице Нахимова.

Применение выражений в качестве аргументов агрегирующих функций

SELECT SUM(Area/Perimeter*2) FROM Здания

Для каждого здания рассчитывается величина равная Площадь/Периметр*2 и суммируется.

Применение агрегирующих функций в составе выражений

SELECT SQRT (SUM (Area)), "Общий периметр" + SUM (Perimeter) FROM Здания

Возвращает квадратный корень от суммарной площади всех зданий и фразу вида «Общий периметр XXX » , где XXX - суммарный периметр всех зданий.

Использование ключевого слова DISTINCT

SELECT COUNT(DISTINCT Улица) FROM Здания

Возвращает количество разных названий улиц в БД слоя.

Данные в ХД хранятся как в детализированном, так и в агрегированном виде. Данные в детализированном виде поступают непосредственно из источников данных и соответствуют элементарным событиям, регистрируемым OLTP-системами. Такими данными могут быть ежедневные продажи, количество произведенных изделий и т.д. Это неделимые значения, попытка дополнительно детализировать которые лишает их логического смысла.

Многие задачи анализа (например, прогнозирование) требуют использования данных определенной степени обобщения. Например, суммы продаж, взятые по дням, могут дать очень неравномерный ряд данных, что затруднит выявление характерных периодов, закономерностей или тенденций. Однако, если обобщить эти данные в пределах недели или месяца и взять сумму, среднее, максимальное и минимальное значения за соответствующий период, то полученный ряд может оказаться более информативным. Процесс обобщения детализированных данных называется агрегированием, а сами обобщенные данные - агрегированными (иногда - агрегатами). Обычно агрегированию подвергаются числовые данные (факты), они вычисляются и содержатся в ХД вместе с детализированными данными.

Поскольку один и тот же набор детализированных данных может породить несколько наборов агрегированных данных с различной степенью обобщения, объем ХД возрастает, иногда существенно. Например, набор, содержащий данные о продажах по дням в течение года, помимо своих 360 значений, порождает 52 значения с обобщением по неделям и 12 - по месяцам. Если при этом вычисляются все виды агрегации - сумма, среднее, максимальное и минимальное значения за соответствующий период, - то количество хранящихся агрегированных значений составит уже (52 + 12) 4 = 256. Иногда это приводит к «взрывному», неконтролируемому росту ХД и вызывает серьезные технические проблемы: хранилище «распухает», из-за того что непрерывный поток входных данных автоматически агрегируется в соответствии с настройками ХД. Однако с этим приходится мириться: если бы агрегированные данные не содержались в ХД, а вычислялись в процессе выполнения запросов, время выполнения запроса увеличилось бы в несколько раз.

Метаданные

Слово «метаданные» (от греч. meta и лат. data) буквально переводится как «данные о данных». Метаданные в широком смысле необходимы для описания значения и свойств информации с целью лучшего ее понимания, использования и управления ею. Любой человек, который читал книги или пользовался библиотекой, в той или иной мере имел дело с метаданными.

Пример

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

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

Метаданные - высокоуровневые средства отражения информационной модели и описания структуры данных, используемой в ХД. Метаданные должны содержать описание структуры данных хранилища и структуры данных импортируемых источников. Метаданные хранятся отдельно от данных в так называемом репозитарии метаданных.

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

Два уровня метаданных:

    технический (административный)

    бизнес-уровень.

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

Бизнес-метаданные обеспечивают пользователю возможность концентрироваться на процессе анализа, а не на технических аспектах работы с хранилищем; они включают бизнес-термины и определения, которыми привык оперировать пользователь.

Фактически бизнес-метаданные представляют собой описание предметной области, для работы в которой создается аналитическая система или ХД. К формированию бизнес-метаданных должны активно привлекаться эксперты и аналитики, которые впоследствии и будут использовать систему для получения аналитических отчетов.

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

"...Агрегирование данных (data aggregation): процесс сбора, обработки и представления информации в окончательном виде. Агрегирование данных в основном выполняется для формирования отчетов, выработки политики, управления здравоохранением, научных исследований, статистического анализа и изучения здоровья населения..."

Источник:

"ИНФОРМАТИЗАЦИЯ ЗДОРОВЬЯ. ТРЕБОВАНИЯ К АРХИТЕКТУРЕ ЭЛЕКТРОННОГО УЧЕТА ЗДОРОВЬЯ. ГОСТ Р ИСО/ТС 18308-2008"

(утв. Приказом Ростехрегулирования от 11.03.2008 N 44-ст)

  • - 1. Один из символов данных, представленных в двоичной позиционной системе счисления Употребляется в документе: Приложение № 1 к ГОСТ 17657-79 Передача данных...

    Телекоммуникационный словарь

  • - англ. aggregation; нем. Aggregation. 1...

    Энциклопедия социологии

  • - объединение, соединение однородных показателей для получения совокупных показателей...

    Словарь бизнес терминов

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

    Словарь бизнес терминов

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

    Словарь бизнес терминов

  • - англ.aggregatus market стратегия маркетинга, при которой весь рынок представляется как однородная структура, к ней подходят со стандартными ходами. Метод противоположный сегментации рынка...

    Словарь бизнес терминов

  • - моделирование данных, используемых в теории управления, для адекватности существующей ситуации...

    Словарь бизнес терминов

  • - Переориентирование политических требований в альтернативные русла, что часто наблюдается в деятельности политических партий...

    Политология. Словарь.

  • - в корпоративном финансовом планировании - суммирование малых инвестиционных предложений каждой из операционных единиц инвестиционной компании...

    Финансовый словарь

  • - характеристика набора данных, которая определяет: - диапазон возможных значений данных из набора; - допустимые операции, которые можно выполнять над этими значениями; - способ хранения этих значений в памяти...

    Финансовый словарь

  • - соединение отдельных единиц или данных в единый показатель...

    Большой экономический словарь

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

    Большой экономический словарь

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

    Большой экономический словарь

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

    Большой экономический словарь

  • - укрупнение экономических показателей посредством их объединения в единую группу. Агрегированные показатели представляют обобщенные, синтетические измерители, объединяющие в одном общем показателе многие частные...

    Энциклопедический словарь экономики и права

  • - сущ., кол-во синонимов: 2 агрегация объединение...

    Словарь синонимов

"Агрегирование данных" в книгах

Проект «Хранилище данных» и проект «Технология выявления скрытых взаимосвязей внутри больших баз данных»

Из книги автора

Проект «Хранилище данных» и проект «Технология выявления скрытых взаимосвязей внутри больших баз данных» Оба этих проекта были интегрированы в 1999 г. Благодаря им начались разработка и проведение кампаний по продаже банковских продуктов. Эти проекты создали большие

Глава 10 АГРЕГИРОВАНИЕ ПЕРЕМЕННЫХ

автора Форрестер Джей

Глава 10 АГРЕГИРОВАНИЕ ПЕРЕМЕННЫХ Ценность модели во многом обусловлена разграничением в системе важных и несущественных факторов. Частично такое обособление основного содержания системы достигается путем агрегирования однородных факторов, которое желательно и

10. 2. Агрегирование на основе подобия функций решений

Из книги Основы кибернетики предприятия автора Форрестер Джей

10. 2. Агрегирование на основе подобия функций решений Функции решений, управляющих темпами потока, наилучшим образом раскрывают допустимость агрегирования.Можно агрегировать в одном канале любые два элемента или группы элементов при наличии следующих условий:- если

Экспорт данных из базы данных Access 2007 в список SharePoint

автора Лондер Ольга

Экспорт данных из базы данных Access 2007 в список SharePoint Access 2007 позволяет экспортировать таблицу или другой объект базы данных в различных форматах, таких как внешний файл, база данных dBase или Paradox, файл Lotus 1–2–3, рабочая книга Excel 2007, файл Word 2007 RTF, текстовый файл, документ XML

Перемещение данных из базы данных Access 2007 на узел SharePoint

Из книги Microsoft Windows SharePoint Services 3.0. Русская версия. Главы 9-16 автора Лондер Ольга

Перемещение данных из базы данных Access 2007 на узел SharePoint Потребности многих приложений Access 2007 превышают простую потребность в управлении и сборе данных. Часто такие приложения используются многими пользователями организации, а значит, имеют повышенные потребности в

Спасение данных из поврежденной базы данных

Из книги Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil автора Ковязин Алексей Николаевич

Спасение данных из поврежденной базы данных Возможно, что все вышеприведенные действия не приведут к восстановлению базы данных. Это означает, что база серьезно повреждена и либо совсем не подлежит восстановлению как единое целое, либо для ее восстановления понадобится

Проверка введенных данных на уровне процессора баз данных

автора Мак-Манус Джеффри П

Проверка введенных данных на уровне процессора баз данных Помимо проверки данных во время ввода информации, следует знать о том, что можно также выполнять проверку и на уровне процессора баз данных. Такая проверка обычно более надежна, поскольку применяется независимо

Из книги Обработка баз данных на Visual Basic®.NET автора Мак-Манус Джеффри П

Обновление базы данных с помощью объекта адаптера данных

Из книги Язык программирования С# 2005 и платформа.NET 2.0. автора Троелсен Эндрю

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

Глава 2 Ввод данных. Типы, или форматы, данных

Из книги Excel. Мультимедийный курс автора Мединов Олег

Глава 2 Ввод данных. Типы, или форматы, данных Работа с документами Excel сопряжена с вводом и обработкой различных данных, то есть ин формации, которая может быть текстовой, числовой, финансовой, статистической и т. д. МУЛЬТИМЕДИЙНЫЙ КУРС Методы ввода и обработки данных

3.2. Экспорт данных из ERwin в BPwin и связывание объектов модели данных со стрелками и работами

Из книги Моделирование бизнес-процессов с BPwin 4.0 автора Маклаков Сергей Владимирович

Базы данных (классы для работы с базами данных)

Из книги Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT автора Фролов Александр Вячеславович

Базы данных (классы для работы с базами данных) В MFC включены несколько классов, обеспечивающую поддержку приложений, работающих с базами данных. В первую очередь это классы ориентированные на работу с ODBC драйверами – CDatabase и CRecordSet. Поддерживаются также новые средства для

Агрегирование

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

Агрегирование В некоторых областях информатики - базах данных, моделировании, анализе требований - разработана классификация отношений, имеющих место между элементами моделируемой системы. В этих контекстах часто встречается отношение "агрегирования" (aggregation),

Из книги Комментарий к Федеральному закону от 27 июля 2006г. N 152-ФЗ "О персональных данных" автора Петров Михаил Игоревич

Статья 16. Права субъектов персональных данных при принятии решений на основании исключительно автоматизированной обработки их персональных данных Комментарий к статье 161. Комментируемая статья определяет права субъектов персональных данных по отношению к принятию

2. Определение типа сравнения данных (от идеи к сравнению данных)

Из книги Говори на языке диаграмм: пособие по визуальным коммуникациям автора Желязны Джин

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

Предложение ROLLUP позволяет в команде SELECT вычислять многоуровневые частичные суммы для специфицированных групп измерений. Также вычисляется итоговая сумма. Предложение ROLLUP является простым расширением предложения GROUP BY , поэтому синтаксис для его применения прост. Использование предложения ROLLUP очень эффективно.

Синтаксис:

SELECT ... GROUP BY ROLLUP(grouping_column_reference_list)

Действия ROLLUP являются следующими: создаются частичные суммы для каждого из раскрываемых уровней от наиболее низкого уровня иерархии к более высокому уровню и вычисляется итоговая сумма в соответствии с указанным списком колонок в предложении ROLLUP . Предложение ROLLUP рассматривает свои аргументы как упорядоченный список колонок группировки. Сначала вычисляется стандартное агрегатное значение, указанное в предложении GROUP BY . Затем создаются частичные суммы для уровней атрибутов из списка группировки GROUP BY в порядке возрастания их значений, справа налево по списку колонок группировки. И окончательно создается итоговая сумма (grand total).

Предложение ROLLUP создает частичные суммы для n+1 уровней, где n есть число колонок группировки. Например, если в запросе указан ROLLUP на колонки группировки измерений "Время" (Time), "Регион" (Region) и "Отдел продаж" (Department) (n=3 ), то результирующее множество (result set) будет включать в себя строки для 4-х уровней агрегации.

Рассмотрим примеры.

Пример 22.3 . Пусть руководству компании требуется отчет о прибыли по всем регионам по всем отделам продаж за 2007-08 гг. Предложение SELECT для приведенной на рис. 22.3 схемы ХД может выглядеть следующим образом.

SELECT Time, Region, Department, SUM(Profit) AS Profit FROM sales GROUP BY ROLLUP(Time, Region, Department);

Вывод 1 : Агрегирование в ROLLUP для трех измерений

Time Region Department Profit
2007 Центральный VideoRental 75,00
2007 Центральный VideoSales 74,00
2007 Центральный NULL 149,00
2007 Восточный VideoRental 89,00
2007 Восточный VideoSales 115,00
2007 Восточный NULL 204,00
2007 Западный VideoRental 87,00
2007 Западный VideoSales 86,00
2007 Западный NULL 173,00
2007 NULL NULL 526,00
2008 Центральный VideoRental 82,00
2008 Центральный VideoSales 85,00
2008 Центральный NULL 167,00
2008 Восточный VideoRental 101,00
2008 Восточный VideoSales 137,00
2008 Восточный NULL 238,00
2008 Западный VideoRental 96,00
2008 Западный VideoSales 97,00
2008 Западный NULL 193,00
2008 NULL NULL 598,00
NULL NULL NULL 1124,00

Как видно из примера выше, запрос возвращает следующий набор строк:

  • предложением GROUP BY без использования ROLLUP ;
  • частичные суммы 1-го уровня, агрегированные для "Отдела продаж" (Department) для каждой комбинации измерений "Время" (Time) и "Регион" (Region);
  • частичные суммы 2-го уровня, агрегированные для измерений "Регион" (Region) и "Отдела продаж" (Department) для каждого значения измерения "Время" (Time);
  • строку с итоговой суммой.

Заметим, что NULL-значения показываются только для ясности. В действительности при выводе будут показаны пробелы.

NULL-значения, возвращаемые в результате выполнения предложений ROLLUP и CUBE , не всегда могут толковаться в общепринятом смысле, как неопределенные значения. NULL-значения могут указывать, что строка содержит частичную сумму. Например, первое NULL-значение в Выводе 1 появляется в колонке "Отдел продаж" (Department). Это NULL-значение означает, что строка есть частичная сумма для всех отделов продаж для Центрального региона за 2007 год.

Использование ROLLUP для вычисления частичных сумм

Можно использовать предложение ROLLUP только для вычисления некоторых частичных сумм. Такие команды с применением ROLLUP используют синтаксис как показано ниже:

GROUP BY expr1, ROLLUP(expr2, expr3);

В этом случае предложение ROLLUP создает частичные суммы для (2+1=3) уровней агрегации (aggregation levels), т.е. для уровней (expr1, expr2, expr3) , (expr1, expr2) и (expr1) . Итоговая сумма (grand total) не создается.

Пример 22.4 . Пусть руководству компании требуется отчет о прибыли по всем регионам по всем отделам продаж за 2007-2008 гг. без итоговой суммы прибыли. Предложение SELECT для приведенной на рис. 22.3 схемы ХД может выглядеть следующим образом:

SELECT Time, Region, Department, SUM(Profit) AS Profit FROM sales GROUP BY Time, ROLLUP (Region, Department);

Вывод 2 . Использование предложения ROLLUP для вывода частичных сумм

Time Region Department Profit
2007 Центральный VideoRental 75,00
2007 Центральный VideoSales 74,00
2007 Центральный NULL 149,00
2007 Восточный VideoRental 89,00
2007 Восточный VideoSales 115,00
2007 Восточный NULL 204,00
2007 Западный VideoRental 87,00
2007 Западный VideoSales 86,00
2007 Западный NULL 173,00
2007 NULL NULL 526,00
2008 Центральный VideoRental 82,00
2008 Центральный VideoSales 85,00
2008 Центральный NULL 167,00
2008 Восточный VideoRental 101,00
2008 Восточный VideoSales 137,00
2008 Восточный NULL 238,00
2008 Западный VideoRental 96,00
2008 Западный VideoSales 97,00
2008 Западный NULL 193,00
2008 NULL NULL 598,00

Как видно, запрос возвращает следующее множество строк:

  • обычные строки агрегации, которые выдаются предложением GROUP BY без использования ROLLUP ;
  • частичную сумму 1-го уровня агрегации по "Отделам продаж" (Department) для каждой комбинации "Время" (Time) и "Регион" (Region);
  • частичную сумму 2-го уровня агрегации по измерениям "Регион" (Region) и "Отдел продаж" (Department) для каждого значения измерения "Время" (Time);
  • нет строки с итоговой суммой.

Можно вычислить частичные суммы без использования предложения ROLLUP следующим образом:

SELECT Time, Region, Department, SUM(Profit) FROM Sales GROUP BY Time, Region, Department UNION ALL SELECT Time, Region, "" , SUM(Profit) FROM Sales GROUP BY Time, Region UNION ALL SELECT Time, "", "", SUM(Profit) FROM Sales GROUP BY Time UNION ALL SELECT "", "", "", SUM(Profit) FROM Sales;

Как видно из примера выше, для этого требуется для n измерений n+1 SELECT с UNION ALL .

ROLLUP-предложение целесообразно использовать для задач, в которых вычисляются промежуточные или частичные суммы:

Предложение CUBE

Частичные суммы, генерируемые предложением ROLLUP , представляют только часть возможных комбинаций частичных сумм в измерениях. Например, в перекрестном отчете (см. табл. 22.1) итоги работы отделов продаж по регионам (279,000 и 319,000) не могут быть вычислены в предложении ROLLUP(Time, Region, Department) . Для этого нужно изменить порядок колонок группировки в предложении ROLLUP: ROLLUP(Time, Department, Region) . Простой способ генерации полного набора частичных сумм для перекрестных отчетов состоит в использовании расширения CUBE предложения GROUP BY .

Предложение CUBE позволяет команде SELECT вычислить частичные суммы для всех возможных комбинаций групп измерений. Оно также вычисляет итоговую сумму. Подобно ROLLUP , предложение CUBE является расширением предложения GROUP BY .

Синтаксис:

SELECT ... GROUP BY CUBE (grouping_column_reference_list)

Из примера ниже видно, что CUBE берет указанный набор колонок группировки и создает частичные суммы для всех возможных комбинаций значений этих колонок. С точки зрения многомерного анализа, предложение CUBE генерирует все частичные суммы, которые могут быть вычислены для куба данных с указанными измерениями. Если указывается CUBE(Time, Region, Department) , то результирующее множество запроса будет включать все значения, которые входят в аналогичную конструкцию 2007

Центральный VideoSales 74,00 2007 Центральный NULL 149,00 2007 Восточный VideoRental 89,00 2007 Восточный VideoSales 115,00 2007 Восточный NULL 204,00 2007 Западный VideoRental 87,00 2007 Западный VideoSales 86,00 2007 Западный NULL 173,00 2007 NULL NULL 526,00 2008 Центральный VideoRental 82,00 2008 Центральный VideoSales 85,00 2008 Центральный NULL 167,00 2008 Восточный VideoRental 101,00 2008 Восточный VideoSales 137,00 2008 Восточный NULL 238,00 2008 Западный VideoRental 96,00 2008 Западный VideoSales 97,00 2008 Западный NULL 193,00 2008 NULL VideoRental 279,00 2008 NULL VideoSales 319,00 2008 NULL NULL 598,00 NULL Центральный VideoRental 157,00 NULL Центральный VideoSales 159,00 NULL Центральный NULL 316,00 NULL Восточный VideoRental 190,00 NULL Восточный VideoSales 252,00 NULL Восточный NULL 442,00 NULL Западный VideoRental 183,00 NULL Западный VideoSales 183,00 NULL Западный NULL 366,00 NULL NULL VideoRental 530,00 NULL NULL VideoSales 594,00 NULL NULL NULL 1124,00

Загрузка...